我尝试使用Redis,Laravel Echo,Laravel Echo Server和socket.io广播一个简单的事件。 我已经在客户端获得了一切。该消息确实正在播出,并且laravel echo服务器正在接收它。
在chat.dev/上我有客户加入。在chat.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问题链接。
答案 0 :(得分:1)
我有类似的问题,我创建了一个单独的自定义事件,在广播功能上我这样做:返回新频道(&#39; test_channel&#39;);而不是&#34;私人频道&#34;在laravel 5.4中,请检查您的.env是否定义了BROADCAST_DRIVER。