当前位置: 首页 > 后端技术 > PHP

基于Laravel5.4+Vue+Redis实时聊天的小demo

时间:2023-03-29 20:54:35 PHP

基于Laravel+Vue+Redis实时聊天的小demo这是基于Laravel5.4+Vue+Pusher实时聊天的小demo-timechat当然也可以单机运行,直接把驱动改成Redisgithubhttps://github.com/jplhomer/laravel-realtime-chat-demogitgitclonehttps://github.com/jplhomer/laravel-realtime-chat-demo因为GitHub是基于Pusher的,所以安装前需要做一些修改。进入composition.json去掉"pusher/pusher-php-server":"^2.6"加入"predis/predis":"^1.1"然后安装composercdprojectcomposerinstall配置数据库和keycp.env.example.envartkey:generateconfiguredriverBROADCAST_DRIVER=redismigrateartmigrate然后进入package.jsonremove"pusher-js":"^4.0.0"yarnornpminstallyarnnpmyarnornpmpackageyarnrundevnpmrundev由于Redis使用Socket.IO,需要配置客户端Socket.io和服务器端Socket.io。客户端Socket.IO输入bootstrap.jswindow.Echo=newEcho({broadcaster:'socket.io',host:'http://yourdomain.app:6001'});输入app.blade.phphead并添加serverlaravel-echo-serveryarnaddlaravel-echo-服务器或npminstalllaravel-echo-server安装完成后会生成服务端的配置文件。启动后会读取这个配置文件laravel-echo-serverinit我的配置文件{"authHost":"http://delo.app","authEndpoint":"/broadcasting/auth","clients":[],"database":"redis","databaseConfig":{"redis":{},"sqlite":{"databasePath":"/database/laravel-echo-server.sqlite"}},"devMode":false,"host":"delo.app","port":"6001","protocol":"http","socketio":{},"sslCertPath":"","sslKeyPath":""}如果你不要运行laravel-echo-serverinit,你可以新建一个laravel-echo-server.json文件,复制上面的内容并修改到你的主机上。在app.blade.php中引入启动laravel-echo-serverstartok最后注册两个账号,开始实验你可能会发现每刷新一个浏览器,另一个浏览器的在线数就会增加1,但是如果使用pusher就不会出现这个问题(这是为什么呢?)奇怪的是如何解决它。我走了很多弯路。一开始想到了数组去重的方法。在app.js中,你会发现Echo.join('chatroom').here((users)=>{this.usersInRoom=users;}).joining((user)=>{this.usersInRoom.push(user);}).leaving((user)=>{this.usersInRoom=this.usersInRoom.filter(u=>u!=user)}).listen('MessagePosted',(e)=>{this.messages.push({消息:e.message.message,用户:e.user});});像这样的重方法Array.prototype.unique=function(){varres=[];变种JSON={};for(vari=0;iid;});ok未来可期!总结:虽然我写了两个基于pusher和redisbroadcast的小demo,但是还是停留在配置层面。底层的东西仍然是朦胧的。但是对于刚入门的初学者来说,这个比较有用。因为我更喜欢先呈现事物,然后再深入。演示爱好者