如何解决如何调试laravel-echo-server? Laravel 8 Redis 广播
在创建事件并将其发送到 Redis 后,我尝试订阅该事件,并通过 Vue 组件中的 socket.io 向 laravel-echo-server 发出请求。
window.Echo.channel('chat')
.listen('Message',({message}) => {
this.messages.push(message);
});
我用命令启动了 laravel-echo-server
laravel-echo-server start
{
"authHost": "http://localhost","authEndpoint": "/broadcasting/auth","clients": [],"database": "redis","databaseConfig": {
"redis": {},"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},"devMode": true,"host": null,"port": "6001","protocol": "http","socketio": {},"secureOptions": 67108864,"sslCertPath": "","sslKeyPath": "","sslCertChainPath": "","sslPassphrase": "","subscribers": {
"http": true,"redis": true
},"apiOriginAllow": {
"allowCors": false,"allowOrigin": "","allowMethods": "","allowHeaders": ""
}
}
另外,我开始排队了。
php artisan queue:work
还有 Laravel 开发服务器。
php artisan serve
提交表单后,redis-monitor显示事件生成并到达Redis服务器,bub我在Firefox浏览器中得到响应。
http://127.0.0.1:6001/socket.io/?EIO=4&transport=polling&t=NXbeHKa
96:0{"sid":"tmJyofZrnWNMGxIqAALI","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":5000}2:40
并且消息不会发送给订阅的客户
我该如何解决这个问题?
解决方法
问题是我的系统上安装了最新版本的“socket.io-client”库
在“package.json”文件中,我改变了这个库的版本:
"socket.io-client": "^4.0.0"
现在是:
"socket.io-client": "^2.4.0"
并且还需要更改“socket.io”
"socket.io": "^2.4.0"
要记住的另一点是 Laravel 为 Redis 通道创建了一个“laravel_database_”前缀。要订阅它,您需要将此前缀添加到频道名称
window.Echo.channel('laravel_database_chat')
.listen('Message',({message}) => {
this.messages.push(message);
});
或更改“.env”文件以便没有前缀。
BROADCAST_DRIVER=redis
...
...
...
REDIS_HOST=127.0.0.1
REDIS_CLIENT=predis
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_PREFIX=""
还有一点,如果你想和Redis一起使用Laravel队列,你需要在“.env”文件中写队列的配置:
QUEUE_CONNECTION=redis
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。