Laravel Echo没有收到puher事件



我的事件在推进器上接收,如-

事件-API消息

详细信息-频道:私人聊天,事件:App\Events\MessageSent

但在我的Vue前端,Echo没有收到任何来自pusher的事件。

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 IlluminateBroadcastingChannel|array
*/
public function broadcastOn()
{
return new PrivateChannel('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,
});

路线/通道.pp

Broadcast::channel('chat', function ($user) {
return auth()->check();
});

我还设置了广播驱动程序=pusher&我的.env文件中的所有推杆凭据

在MessageSent事件中执行此

public function broadcastOn()
{
Broadcast::routes(['middleware' => ['auth:api']]);
return new PrivateChannel('chat');
}

在BroadcastServiceProvider中添加以下行:

Broadcast::routes(['middleware' => ['auth:api']]);

我已经通过将以下代码从bootstrap.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 中不起作用

最新更新