我正在尝试使用Redis、Laravel Echo、Laravel Echo Server和socket.io广播一个简单的事件。我已经把客户端的一切都准备好了。这条消息确实正在广播,laravel echo服务器正在接收它。
在have .dev/I上有客户端加入。在have .dev/new上,我有正在广播的事件。
[5:14:31 PM] - HvEq_a12YnQFJGFiAAAE joined channel: chat
Channel: chat
Event: message.created
CHANNEL chat所以看起来一切都很正常。在客户端,我包含了socket.io,它正在找到它。
<script src="//{{ Request::getHost() }}:6001/socket.io/socket.io.js"></script>然后我就跑
import Echo from 'laravel-echo'
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001'
});
window.Echo.channel('chat')
.listen('.message.created', (e) => {
console.log("Got message");
});但是没有任何东西被记录到控制台。为什么?
经过多次修改,现在可以接收到帧了。但是,.listen并没有捕捉到它。
42["message.created", "chat", {,…}]
0
:
"message.created"
1
:
"chat"
2
:
{,…}
message
:
{id: 23, body: "Modified", created_at: "2017-07-19 01:11:18", updated_at: "2017-07-19 01:11:18"}
socket
:
null这是各自的Reddit和GitHub问题链接。
发布于 2017-07-19 09:45:24
我也有类似的问题,我创建了一个单独的自定义事件,在广播函数中我这样做了:返回新的频道(‘test_channel’);而不是在laravel 5.4中的“私有频道”,另外,请检查你的.env是否定义了BROADCAST_DRIVER。
https://stackoverflow.com/questions/45179532
复制相似问题