Laravel学习笔记broadcast_database
composer需要predis/predis
- 设置.env文件,修改广播驱动
BROADCAST_DRIVER=redis
- 设置=.env文件,修改D(使用Redis队列)
- 打开config/app.php
App\Providers\BroadcastServiceProvider::class
- 生成事件
artisan do:界面中的事件,我应该做什么:兄弟。
实现Should Broadcast
- 编辑广播内容以及频道
publicfunction__construct($content){$this->content=$content;}publicfunctionbroadcastOn(){returnnewPrivateChannel('test_chat');}
- 安装客户端与redis广播配对,
cnpm install --save
- 安装 laravel-echo-server (因为 Laravel 官方没有原生服务器实现;但是,您可以选择社区驱动和维护的项目 tlaverdure/laravel-echo-server)
cnpm install -g laravel-echo -server
(不知道为什么,使用npm会安装其他鬼,所以请使用cnpm) - 如果laravel安装在虚拟机上,在.env中添加以下内容
LARAVEL_ECHO_SERVER_REDIS_HOST=192.168.10.10LARAVEL_ECHO_SERVER_REDIS_PORT=6379
- 配置客户端资源/js /引导程序。 js
import Echo from "laravel-echo"
window.io =require('');
window.Echo=newEcho({
broadcaster:'',
host: window.location.hostname +':6001'});
- 配置客户端监听广播
window.Echo.channel('countryside').listen('Free',(e)=>{
console.log(e);});
- 启动Laravel Queue Worker
$ php artisan queue:work
- 启动Laravel echo server
$ laravel-echo-server start
- 过程中遇到这样的问题登录网站后控制台狂跳, 503错误提示跨域问题
研究了一天多,发现是laravel-echo服务器配置问题(真正的坑)。 。 。而不是所谓的跨域问题(其实有503错误,不过注意跨域错误)
因为使用homestead来运行服务器,所以homestead上的代码映射到本地目录,
和phpstorm用于本地使用链接本地文件夹中的项目进行开发。
phpstorm 执行 laravel-echo-server start 后,关联的是本地域名服务器
,而不是 homestead上的服务器。但前端请求时,请求为
host: window.location.hostname + ':6001'
即。当前域名:6001(这个域名挂载在虚拟机上,即)
通向请求地址和laravel-echo-server服务器。地址不匹配,导致503问题。解决办法有两种:
- 如上图所示,将请求地址改为localhost(但这只是临时的,只能用于本地测试和生产环境。100%问题)
- 安装诚实地在 homestead 上运行 laravel-echo- 服务器并在 homestead 上启动它。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。