断开连接后,还能接收到心跳

李总

问题描述

问题一

我在onWorkerStart方法里,通过mysql查询到所有设备上一次存的clientId
然后全执行一遍closeClient方法,全断开一遍
但发现断开后,还是能收到心跳数据,为什么?

执行了closeClient之后,
查看getAllClientIdList,里面还是有这个clientId

问题二
程序出错导致onWorkerStart方法重新被执行,之前已经连接的clientId会被断开么 ?

108 1 0
1个回答

walkor 打赏

1 client_id 是临时id,不能存数据库。正确做法是gateway::bindUid($client_id, $uid) 或者 Gateway::joinGroup($client_id, $gid)绑定uid或者群组id,然后操作$uid或$gid
2 onWorkerStart 里不应该有关闭连接的操作
3 至于 onWorkerStart 里执行关闭所有连接,还有心跳,onWorkerStart一般是进程启动时触发的,这时候系统里可能没有任何连接,执行关闭就没有意义。后面有心跳数据说明后面有连接连上来了。

×
🔝