问题描述
我试图了解用户加入频道后如何捕获事件后端。我的意思是在对“私人”或“在线”频道进行身份验证之后。
例如,在那之后:
broadcast::channel('chat.{roomId}',function ($user,$roomId) {
if ($user->canJoinRoom($roomId)) {
return ['id' => $user->id,'name' => $user->name];
}
});
成功进行,我希望有机会捕捉到一个事件,以了解用户已加入频道(不仅是前端侧)。
关于如何处理的任何提示吗?
参考:https://laravel.com/docs/6.x/broadcasting#joining-presence-channels
解决方法
要在后端处理事件,客户端需要在加入频道时进行沟通。
axios.post('/channel/join')
.then(res => res.data)
.then(data => console.log);
在后端,您可以在routes/web.php
中有一条路线:
Route::post('/channel/join','ChannelController@joined');
然后,您可以在ChannelController.php
中处理该操作并执行所需的操作:
public function joined(Request $request)
{
$user = auth()->user();
broadcast(new UserJoinedChannel($user))->toOthers();
return ['status' => 'Channel joined successfully!'];
}