Ash*_*ett 7 events laravel vue.js 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
});
Run Code Online (Sandbox Code Playgroud)
3)添加了auth签入App\Providers\BroadcastServiceProvider(如果用户现在已登录,则返回true):
Broadcast::channel('chat', function ($user) {
// verify that user is recipient of message
return \Auth::check();
});
Run Code Online (Sandbox Code Playgroud)
4)添加App\Providers\BroadcastServiceProvider::class,到App/config/app.php.
5)创建了App\Events\UserSentMessage一个PrivateChannel以命名方式广播的事件chat.我也尝试过广播Channel.我检查过事件是event()在控制器中调用助手时触发的,它似乎没有被广播.我也试过broadcast在提到的控制器中使用该方法.
6)在mountedVue生命周期钩子中的有效Vue组件中添加了以下内容(组件按预期呈现数据等,只是不与Laravel Echo atm一起使用):
Echo.private('chat').listen('UserSentMessage', (data) => {
console.log(data);
}, (e) => {
console.log(e);
});
Run Code Online (Sandbox Code Playgroud)
也尝试过:
Echo.channel('chat').listen('UserSentMessage', (data) => {
console.log(data);
}, (e) => {
console.log(e);
});
Run Code Online (Sandbox Code Playgroud)
Vue组件成功订阅指定的通道.推送器调试控制台识别出它正在订阅,但触发后的事件永远不会被广播.
似乎广播事件存在问题.我也尝试过使用broadcast()帮助器,而不是event()帮助器.
此外,在使用Laravel Echo via订阅活动时Echo.private().它似乎以通道名称为前缀private,因此我也尝试将广播(在事件中)广播到名为的频道private-chat.
num*_*8er 12
我只能建议你检查你的.env文件
,确保BROADCAST_DRIVER不是log(尝试pusher)
,也不要忘记继续运行队列监听器:
php artisan queue:listen
Run Code Online (Sandbox Code Playgroud)
就我而言,我的事件类文件是由“make:event”生成的,它确实有broadcastOn方法...但是没有implements ShouldBroadcast〜它导致 laravel-echo-server 没有输出任何内容〜
Laravel 框架 8.13.0
| 归档时间: |
|
| 查看次数: |
5422 次 |
| 最近记录: |