Laravel Echo接收帧但不触发

时间:2017-07-19 01:24:31

标签: laravel websocket socket.io laravel-echo

我尝试使用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问题链接。

Reddit GitHub

1 个答案:

答案 0 :(得分:1)

我有类似的问题,我创建了一个单独的自定义事件,在广播功能上我这样做:返回新频道(&#39; test_channel&#39;);而不是&#34;私人频道&#34;在laravel 5.4中,请检查您的.env是否定义了BROADCAST_DRIVER。