Laravel使用Pusher广播无法使用Vue收听

时间:2018-10-25 15:13:08

标签: laravel laravel-5 pusher laravel-echo pusher-js

使用Laravel(v5.7),我试图使Broacasting与Pusher和Vue一起使用。

该应用就像聊天。在私人聊天中发送消息时,将调用以下功能: broadcast(new NewChat($message));

这是“ NewChat”事件:

class NewChat implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $message;

    public function __construct(\App\Message $message)
    {
        $this->message = $message;
    }

    public function broadcastOn()
    {
        return new PrivateChannel('chats.' . $this->message->conversation_id);
    }

    public function broadcastWith()
    {
        return ['message' => $this->message];
    }
}

channels.php具有:

Broadcast::channel('chats.{conversationId}', function ($user, $conversationId) {
    return true; // security i'll do later
});

将其全部发送到Pusher: a user defined function

但是我不知道如何使用Vue正确收听事件并进行全部更新。 我在boostrap.js中添加了以下内容(全部由Vue应用编写):

import Echo from 'laravel-echo'
window.Pusher = require('pusher-js');
window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER, 
    encrypted: true
});
window.Echo.private(`chats.1`)
    .listen('NewChat', (e) => {
        console.log(e);
    });

在示例中,我为专用频道硬编码了数字1,因为该频道与屏幕截图中的频道相同。

我想念什么?我多次阅读文档页面,并尝试按照以下教程进行操作,以了解是否略过了一些小知识,但不知道。 有人看到我的失踪了吗?

1 个答案:

答案 0 :(得分:-1)

根据您在评论中的回复,不会触发您的broadcasting/auth请求调用。这似乎表明未调用bootstrap.js文件中的Laravel回声代码。

一种测试方法是,只需在console.log文件中添加bootstrap.js。可能的原因可能是:a)缺少部署脚本运行,b)您的应用程序入口点未调用bootstrap.js

如果错过了部署脚本的运行,只需运行npm run prod即可解决问题。