Vue/Laravel Websockets Leave



我试图检测客户端何时与websocket断开连接,并用它触发一些功能,但到目前为止我还没有成功。我使用的是BeyondCode网络套接字,我调用类的方式是:

Broadcast::channel('order.{id}', OrderChannel::class);

所以这个OrderChannel类有函数

public function join(User $user, Orders $id)
{
return ['id' => $user->id, 'name' => $user->name, 'image' => $user->profile_photo];
}

它按预期工作,但我想在用户从该套接字断开连接时更新数据库中的某些内容,我尝试了类似的方法:

public function leave(User $user, Orders $id)
{
$order = Orders::where('id', $id)->withTrashed()->update(['user_id' => null]);
return $order;
}

但它不起作用,有什么建议如何触发它吗?

我认为Presence频道应该解决您的问题。您可以在以下网站上找到相关文档:https://laravel.com/docs/8.x/broadcasting#presence-通道。

然后,您可以订阅leaving事件,并通过发送HTTP请求来触发后端,例如,并执行leave函数中当前的代码。

很难说,如果没有看到一个更详细的例子来说明你是如何订阅该活动的。

最新更新