【发布时间】:2021-03-30 14:23:50
【问题描述】:
我的事件正在像推送器一样接收-
事件 - 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');
}
}
聊天.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 和所有推送器凭据
【问题讨论】:
-
你在
routes\channels.php中添加了授权逻辑吗? -
您的开发工具中是否发现任何错误?
-
没有错误。