Laravel Echo 不监听推送事件

Joh*_*hhn 2 laravel pusher vue.js laravel-echo

尝试使用 laravel 和 vuejs 创建一种聊天应用程序。发送消息后,我会从 laravel 触发事件,该事件会使用正确的事件类反映在推送器调试控制台上,但根本不会调用来自 vuejs 的监听回调。

created () {
        window.Echo.channel('chat')
            .listen('MessageSent', (e) => {
                console.log(e); //not getting this
                this.sentMessages.push({
                    message: e.message.message,
                    user: e.user
                });
            });

    },
Run Code Online (Sandbox Code Playgroud)

下面是 Pusher 的调试控制台的屏幕截图, 请参阅此处的图像,因为我被告知我还​​无法嵌入图像

rol*_*oli 5

尝试这个:

created () {
        window.Echo.channel('chat')
            .listen('App\\Events\\Chats\\MessageSent', (e) => {
                console.log(e);
                this.sentMessages.push({
                    message: e.message.message,
                    user: e.user
                });
            });

    },
Run Code Online (Sandbox Code Playgroud)

默认情况下,Laravel 将使用事件的类名来广播该事件。但是,您可以通过在事件上定义 BroadcastAs 方法来自定义广播名称:

public function broadcastAs()
{
    return 'server.created';
}
Run Code Online (Sandbox Code Playgroud)

以上是从Laravel 广播名称复制粘贴的

我的建议:

我一直使用私人频道聊天,你也必须如此。 阅读此处原因

  • 记得添加'. ' 在listen() 中的完整类名之前。从 https://laravel.com/docs/master/broadcasting#namespaces 可以看出 (2认同)