【问题标题】:Laravel Echo not listening for pusher eventsLaravel Echo 不监听推送事件
【发布时间】:2019-01-16 18:31:22
【问题描述】:

尝试用 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
                });
            });

    },

下面是 pusher 的调试控制台截图 see the image here as am told I can't embed images yet

【问题讨论】:

  • 控制台有错误吗?您确定该事件是从 laravel 触发的吗?如果是这样,您能否显示事件名称的推送器调试控制台结果?
  • @roliroli 见上面的图片链接
  • 您是否尝试过设置Window.Pusher.logToConsole = true 以确保它正确订阅频道。
  • 我在哪里设置它,它将如何帮助或我会期待什么
  • 你试过.listen('App\\Events\\Chats\\MessageSent',console.log)???

标签: laravel vue.js pusher laravel-echo


【解决方案1】:

试试这个:

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

    },

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

public function broadcastAs()
{
    return 'server.created';
}

以上是从Laravel Broadcast Name复制粘贴的

我的建议:

我一直使用私人频道进行聊天,您也必须这样做。 Read here why

【讨论】:

  • 记得加 ' 。 ' 在listen() 中的完整类名之前。从laravel.com/docs/master/broadcasting#namespaces看到的@
  • 嘿,我把这个改成私人频道了,现在不工作了?,这是什么?
  • 当您使用私人频道时,您必须对用户进行身份验证。
  • \\双斜线为我工作.listen('\\Modules\\CitizenPortal\\Events\\Shootme', function (e) {我正在使用Nwidart模块包
猜你喜欢
  • 1970-01-01
  • 2022-06-21
  • 2017-08-21
  • 2020-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-18
相关资源
最近更新 更多