我正在为应用程序开发聊天/消息功能。当用户发送消息时,我希望触发并广播特定事件。然后我希望 Laravel Echo 通过 Laravel Echo 在事件的广播频道上收听事件,使用pusher
然后,我希望 Laravel Echo 使用驱动程序
我希望 Laravel Echo 实现位于 Vue 组件中并检索通过事件广播的数据。目前,我无法将事件广播到私人频道或只是一个频道。
这是我所做的:
1) 将配置添加到.env
.
2)添加配置bootstrap.js
:
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'mykey',
encypted: false
});
3) 添加了 auth check in App\Providers\BroadcastServiceProvider
(如果用户现在登录则返回 true):
Broadcast::channel('chat', function ($user) {
// verify that user is recipient of message
return \Auth::check();
});
4) 添加App\Providers\BroadcastServiceProvider::class,
到App/config/app.php
.
5) 创建了 Event App\Events\UserSentMessage
,它在一个PrivateChannel
命名的chat
. 我也尝试过广播到Channel
. 我检查并通过调用event()
控制器中的帮助程序触发了事件,它似乎没有被广播。我也尝试过使用broadcast
提到的控制器中的方法。
6)mounted
在有效的 Vue 组件中的 Vue 生命周期钩子中添加了以下内容(组件正在按预期呈现数据等,只是不适用于 Laravel Echo atm):
Echo.private('chat').listen('UserSentMessage', (data) => {
console.log(data);
}, (e) => {
console.log(e);
});
也试过:
Echo.channel('chat').listen('UserSentMessage', (data) => {
console.log(data);
}, (e) => {
console.log(e);
});
Vue 组件正在成功订阅指定的频道。推送器调试控制台识别出它正在被订阅,但事件在触发时永远不会被广播。
似乎是广播事件存在问题。我也尝试过使用broadcast()
助手,而不是event()
助手。
此外,当通过 Laravel Echo 订阅活动时Echo.private()
。它似乎在频道名称前private
加上private-chat
.