1

我正在尝试使用 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

4

1 回答 1

1

我有类似的问题,我创建了一个单独的自定义事件并在广播功能上我这样做了:return new Channel('test_channel'); 而不是 laravel 5.4 中的“私人频道”,另外,请检查您的 .env 是否定义了 BROADCAST_DRIVER。

于 2017-07-19T01:45:23.653 回答