请问在workerman中,检测客户端在线和迫使客户端下线的原理是什么?

mac
4782 1 0
1个回答

walkor

客户端和gateway保持着socket长连接,这个连接断开就代表客户端下线。所以判断某个客户端是否在线,就判断对应的socket连接是否断开即可。在workerman中如果某个socket断开,workerman会立刻检测到,然后会将该客户端的连接数据清理。

当使用Gateway::isOnline($client_id)时,实际上就是去gateway上判断对应的$client_id对应的连接信息是否存在,在就代表在线,不存在就代表下线。

迫使客户端下线原理是服务端gateway主动断开与客户端的连接,并清理对应client_id的连接数据。

  • 暂无评论
年代过于久远,无法发表回答
🔝