心跳断开问题

mnblkjppp123

目前是设备id绑定$client_id 连接id
我的ateway配置是

60秒不回的话就判断断线

为啥绑定后的id会断线两次???

我推测可能是,第一次登录$client_id1绑定id-123456,过两个心跳之后,没给服务器心跳,
然后设备重连 client_id2绑定id-123456,这时候服务器把第一次的踢出吗?

阅读 154
1个回答

walkor

是否踢掉多个连接是业务逻辑,框架不会自作主张随便踢掉你的连接。
如果一个设备同时有2个断开的日志,说明这个设备在服务端看来有2个连接连着。

  • mnblkjppp123 2021-11-24

    业务逻辑没有踢掉的逻辑啊,唯一就是那个配置中设置pingNotResponseLimit 60秒之内没回复就断开,
    是否是第一次设备ID绑定的client_id1还存在,服务器还没判定他掉线的过程中,第二次设备断线重连重复绑定了client_id2
    形成一个设备ID绑定两次

  • walkor 2021-11-24

    gatewayWorker允许多个连接绑定一个uid。你这个问题有可能是设备发起了2个连接导致的。如果可以重现问题,可以用netstat命令看设备发起了几个连接

  • mnblkjppp123 2021-11-25

    @1:查看后没复现到这个问题。。。如果设备断线重连,服务器不踢出,一段时间后还是会自动释放吧,现在某个连接突然断开,但是上一秒还有心跳包信息,应该是释放上一次连接吧