使用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,因为该频道与屏幕截图中的频道相同。
我想念什么?我多次阅读文档页面,并尝试按照以下教程进行操作,以了解是否略过了一些小知识,但不知道。 有人看到我的失踪了吗?
答案 0 :(得分:-1)
根据您在评论中的回复,不会触发您的broadcasting/auth
请求调用。这似乎表明未调用bootstrap.js
文件中的Laravel回声代码。
一种测试方法是,只需在console.log
文件中添加bootstrap.js
。可能的原因可能是:a)缺少部署脚本运行,b)您的应用程序入口点未调用bootstrap.js
。
如果错过了部署脚本的运行,只需运行npm run prod
即可解决问题。