无法使用 Redis 和 Laravel 5.3 在私有频道上广播通知
Posted
技术标签:
【中文标题】无法使用 Redis 和 Laravel 5.3 在私有频道上广播通知【英文标题】:Not Able to Broadcast notifications on Private Channel with Redis & Laravel 5.3 【发布时间】:2017-09-23 18:51:48 【问题描述】:我正在使用 Laravel-Redis-Socketio-LaravelEcho 制作实时通知。到目前为止,我可以广播到公共频道,但卡在私人频道。 我的 bootstrap.js:
import Echo from "laravel-echo"
window.Echo = new Echo(
broadcaster: 'socket.io',
host: window.location.hostname + ':6001'
);
Laravel-echo-server.json:
"authHost": "http://localhost",
"authEndpoint": "/broadcasting/auth",
"clients": [
"appId": "Omitted purposely",
"key": "Omitted purposely"
],
"database": "redis",
"databaseConfig":
"redis": ,
"sqlite":
"databasePath": "/database/laravel-echo-server.sqlite"
,
"devMode": true,
"host": null,
"port": "6001",
"protocol": "http",
"socketio": ,
"sslCertPath": "",
"sslKeyPath": ""
在我的通知类中,我将 broadcastOn() 设置为:
public function broadcastOn()
return new PrivateChannel('my-channel');
我的客户端是:
Echo.private('my-channel')
.notification((notification) =>
console.log('I am here');
);
使用公共频道一切正常,但使用私人频道,命令行在启动 laravel-echo-server 后显示以下内容:
错误:连接 ECONNREFUSED 127.0.0.1:80。 发送身份验证请求时出错。
【问题讨论】:
【参考方案1】:您必须通过取消注释 config/app.php
中的以下行来添加 broadcast
authentication
路由
App\Providers\BroadcastServiceProvider::class,
这样在您的routes/channel.php
中将检查特定的守卫并根据您的条件返回 1 或 0
【讨论】:
以上是关于无法使用 Redis 和 Laravel 5.3 在私有频道上广播通知的主要内容,如果未能解决你的问题,请参考以下文章
laravel 无法打开输入文件:artisan (5.3)