我使用Laravel成功地安装了WebSocket,并使用了自己的实现。现在我想切换到Laravel Echo和Laravel Echo服务器。但是,经过几个小时的尝试和阅读我能找到的每一份文档后,我确实需要进一步的帮助。
触发事件时发生的情况:队列工作程序根据需要处理事件:“已处理:照亮\广播\广播事件”。但是在laravel echo服务器控制台和客户端上都不会发生任何事情。
一些信息:
>
Laravel在8001端口上运行
Redis在6379上运行
队列工作者正在运行(php工匠队列:工作)
laravel、Redis和laravel-echo-server在同一台机器上运行(192.168.134.214)
尝试专用频道时,BroadcastServiceProvider
中的身份验证似乎有效(如果失败,服务器会将错误写入控制台)
客户端使用套接字。laravel echo服务器的io脚本:
我的演讲摘录。环境:
BROADCAST_DRIVER=redis
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
laravel-echo-server.json:
{
"appKey": "<myAppKey>",
"authEndpoint": "/broadcasting/auth",
"authHost": "http://localhost:8001",
"database": "redis",
"databaseConfig": {
"redis": {
"port": "6379",
"host": "http://localhost"
}
},
"devMode": true,
"host": "192.168.134.214",
"port": "6001",
"sslCertPath": "",
"sslKeyPath": ""
}
应用程序。js
import Echo from "laravel-echo"
window.Echo = new Echo({
broadcaster: 'socket.io',
host: 'http://192.168.134.214:6001',
});
app.blade.php
<script>
Echo.channel('mychan')
.listen('myevent', (e) => {
console.log('Hello World!', e);
});
</script>
“新闻发布”活动的部分内容:
class NewsPublished implements ShouldBroadcast {
use InteractsWithSockets, SerializesModels;
public function broadcastOn() {
return new Channel('mychan');
}
public function broadcastAs() {
return 'myevent';
}
}
..我用
Event(newapp\Events\NewsPublished())触发事件
在将“devMode”切换为true时,我希望从laravel echo服务器获得一些信息。但这似乎没有改变任何事情!
在redis配置中,您已经将超文本传输协议://作为与主机的协议。您需要删除协议,只需使用localhost或127.0.0.1
{
...
"databaseConfig": {
"redis": {
"port": "6379",
"host": "localhost"
}
...
}
*:如果您有能力使用套接字,请考虑使用“PATH”:“/PATS/OT/SOCKFILE”代替“主机”;这更多的是关于性能,但我相信这一修正应该会让它起作用。
作为参考,这里有一个修订版的laravel echo服务器。我正在使用的json配置。
{
"appKey": [omitted],
"authEndpoint": "/broadcasting/auth",
"authHost": "http://localhost",
"database": "redis",
"databaseConfig": {
"redis": {
"db": 2, /*this is an intentional change; the default is zero(0)*/
"path": "/tmp/redis.sock",
"password": [omitted]
}
},
"devMode": false,
"host": "",
"port": "6001",
"referrers": [
{
"host": "*", /*matches any referrer*/
"apiKey": [omitted]
}
],
"sslCertPath": "",
"sslKeyPath": "",
"verifyAuthPath": true,
"verifyAuthServer": false
}
活动是: 路线/频道。php是: 在刀片文件中: 广播频道工作正常。但在私密频道里,这是行不通的。并且在控制台中没有显示任何错误 我使用拉威尔回声和推进器
Laravel广播的想法很棒,但是很难弄清楚如何让它工作。即使在阅读文档多次,看了许多教程...也许我只是错过了一些小事。谁知道呢? 我在Homestead上的Laravel 5.4项目中运行以下代码: 广播的配置设置为Redis。我安装了Laravel回声服务器,并使用laravel-echo-server start运行此功能,并在控制台中看到类似于[11:15:16 AM]-v7y-5DsM
我更新标题如下: 为什么Laravel Echo不使用身份验证头? 编辑:我还尝试像
为了在频道上播放事件,我使用了laravel Echo、redis和socket io。 这是我的活动: 插座。io服务器我正在使用laravel echo服务器,下面是配置: 这是文件中的Echo结构: 运行laravel echo server和call event后,控制台中会显示以下日志,其中显示到频道的事件广播: 但Echo无法收听频道并发生事件。 问题是什么?
我正在尝试创建一个实时聊天应用程序。我使用了Laravel Echo、Redis和socket io。 但是没有收听私人广播聊天频道。 应用程序事件消息推送
我有一个Laravel echo服务器,在本地服务器上运行Redis。我创建了一个测试APIendpoint,它发出可广播事件。 我设置laravel-echoauth密钥,我可以从服务器API获取统计信息。 问题在于通过ws:协议从Angular连接到echo服务器。我的连接代码是 最后,我得到了一个错误:WebSocket连接到ws://127.0.0.1:6001/失败:连接在收到握手响应之