如何解决Laravel Echo 没有收到 puher 事件
我的活动正在推送器上接收-
事件 - API 消息
详细信息 - 频道:私聊,事件:App\Events\MessageSent
但在我的 Vue 前端,Echo 没有从推送器接收任何事件。
MessageSent.php
class MessageSent implements ShouldBroadcast
{
use Dispatchable,InteractsWithSockets,SerializesModels;
public $message;
public $user;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(User $user,Message $message)
{
$this->user = $user;
$this->message = $message;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('chat');
}
}
chat.vue
mounted() {
Echo.private("chat").listen("MessageSent",(e) => {
console.log("Received");
this.allMessages.push(e.message);
this.fetchMessages();
});
},
bootstrap.js
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,forceTLS: true,});
routes/channels.php
Broadcast::channel('chat',function ($user) {
return auth()->check();
});
我还在我的 .env 文件中设置了广播驱动程序 = pusher 和所有推送器凭据
解决方法
在 MessageSent 事件中执行此操作
public function broadcastOn()
{
Broadcast::routes(['middleware' => ['auth:api']]);
return new PrivateChannel('chat');
}
并在 BroadcastServiceProvider 中添加以下行:
Broadcast::routes(['middleware' => ['auth:api']]);
,
我通过将下面的代码从 bootstrap.js 放到 app.js 中解决了这个问题。所以,在我的 app.js -
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,forceTLS: true,});
但我不知道为什么相同的代码在 bootstrap.js 中不起作用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。