如何检测和删除扭曲的死TCP连接?

问题描述 投票:1回答:1

我正在运行一个带有扭曲的Iot套接字服务器。后来我发现设备是否是硬件复位,TCP连接仍然保留在服务器端。我想由于微控制器已经复位,TCP连接没有时间断开连接。

由于我只允许一个设备连接一个,如果TCP连接失效,并且服务器没有得到断开连接请求,新的连接请求将被拒绝。

是的,我确实在扭曲中定义了一个超时计时器。但我们认为超时计时器太长,大约5分钟。等待5分钟后,设备可以重新连接到服务器。

处理此类问题的任何想法?到目前为止,我通过web api添加了一个用户命令,以触发对socket服务器的disconnect命令并允许新的连接。

但任何想法更好吗? Ping回来?

twisted
1个回答
0
投票

我认为你需要实现心跳,在特定的时间间隔,客户端必须向服务器发送一些数据/事件(心跳)。

服务器可以跟踪那些心跳事件并设置超时,如果一段时间内没有来自客户端的心跳,您可以认为客户端连接现在已经死亡,并且可以使用传输对象的lossConnection方法断开客户端连接。您可以在所有协议类中找到传输对象。

transport.loseConnection()

我在实时游戏服务器中使用这种机制。

© www.soinside.com 2019 - 2024. All rights reserved.