【发布时间】:2020-01-15 03:10:36
【问题描述】:
我正在尝试创建一个实时聊天应用程序。我使用了 Laravel Echo、Redis 和 socket-io。
但是laravel-echo没有收听私聊聊天频道。
App\Events\MessagePushed
public function broadcastAs()
{
return 'new.message';
}
public function broadcastOn()
{
return new PrivateChannel("application-chat-{$this->message->job_application_id}");
}
routes/channels.php
Broadcast::channel('application-chat-{job_application_id}', function ($user, $job_application_id) {
return auth()->check();
});
Store Message resource method
public function store(StoreFormRequest $request, JobApplication $application)
{
$request->merge([
'sender_id' => $request->user()->id,
]);
$message = $application->messages()->create($request->all())
->load(['sender', 'receiver']);
event(new MessagePushed($message));
return response()->json([
'message' => $message,
]);
}
Listening to private channel
window.Echo.private(`application-chat-${this.messageApplication}`)
.listen('.new.message', (data) => {
console.clear();
console.log('Got event...', data);
});
【问题讨论】:
-
你试过直接指向事件吗? .listen('MessagePushed')
-
我试过了,没有变化
-
你使用什么作为套接字提供者?
-
我使用 Redis 作为消息广播。
-
如果我没记错的话.. 那很好,但是您仍然需要一些可以将这些发送给用户的东西。看看 Beyondcode/laravel-websockets & tlaverdure/laravel-echo-server
标签: laravel redis socket.io laravel-echo