建议心跳多加一个参数,对于一些接口无论是否有数据接收或发送,都定时发送心跳数据。

0

RT,开发了几个接口,发现别人给的协议都是定时发送心跳,而且不论是否有数据传输,都要定时发送,否则就会断开,gatewayworker的心跳有接收数据就不会发送,建议,增加一个开关,强制发送心跳开关。
这样对于自己内部开发的接口,可以有数据就不发送心跳,对于别的自己不能控制协议的接口,可以开起强制发送心跳。

已邀请:

veinliu - 编程新人

赞同来自:

我现在的情况是我这边作为客户端,对方是服务端,协议是对方定的,我为了方便收发数据,用AsyncTCPconnection 做了两个连接,一个连接到gateway的一个端口中作为客户端,另一个连接对方的端口作为客户端,这样数据用pipe就可以把对方模拟成我的gateway的一个客户端了,这样收发数据就方便统一了,担是对方对这个心跳要求是定时30秒的,我这边发LifeSignRequest,对方回复LifeSignResponse。

walkor

赞同来自:

gateway推荐客户端发送心跳。服务端发送心跳其实主要是为了检测死链接,也就是一些连接被网关或者路由清理了或者对端断网断电等极端情况,能及时知道并清理,避免死连接不断累积导致内存泄漏。对方服务端在gateway看来是一个客户端,心跳应该客户端发来才合理。如果对方服务端不支持定时给对端发送心跳,可以把gateway心跳间隔小一点,保证在30秒内有数据通讯就行了。

veinliu - 编程新人

赞同来自:

咱们这边改小心跳间隔不管用,我看了日志,这个接口,如果是白天,其本上是0.2秒就就有一条数据传输,只改小心跳间隔这种一直有数据的情况下,咱们这边是一直不会发送心跳的,对方60秒没有收到心跳,就会断开。

要回复问题请先登录注册