laravel - 使用 Pusher 的 Laravel 广播不使用 Vue 监听
问题描述
使用 Laravel (v5.7) 我试图让广播与 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
});
但我不知道如何正确地用 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 硬编码为专用频道,因为这与屏幕截图中的频道相同。
我错过了什么?我多次重新阅读文档页面并尝试按照教程查看我是否跳过了一些小的但不知道的内容。有人看到我错过了什么吗?
解决方案
根据您在评论中的回复,您的broadcasting/auth
请求调用不会被触发。这似乎表明您的bootstrap.js
文件中的 Laravel Echo 代码没有被调用。
您可以测试它的一种方法是简单地console.log
在您的bootstrap.js
文件中添加一个。可能的原因可能是 a) 错过了部署脚本运行,b) 您的应用入口点未调用bootstrap.js
.
如果您错过了部署脚本运行,只需运行npm run prod
即可解决问题。
推荐阅读
- excel - 我输入的 Excel 日期为 1/9/18,我想将它们更改为 1/1/09
- java - Java ee api 休息错误:java.lang.IllegalArgumentException
- python - HP ALM Python rest api - 如何为 API 调用正确传递 cookie
- haskell - 编译 Pascal 函数返回值赋值
- regex - 正则表达式匹配 2 位但不同的数字
- makefile - GNU Make 目标在“最新”之前构建了两次;为什么不经过第一次通过?
- python - 使用 tkinter 列表框时发生令人困惑的错误
- angular - Angular 6 Observer - Auth 调用了两次
- php - Google App Engine:运行 Laravel 5.6 项目的问题
- neural-network - LSTM 中权重矩阵的矩阵维度