tcp如何保持长时间连接不断开

https://wiki.swoole.com/wiki/page/160.html
TCP KeepAlive机制 的作用 是检测连接的有无(死活),但无法检测连接是否有效,如断网的时候。“连接有效”的定义 = 双方具备发送 & 接收消息的能力

KeepAlive机制无法代替心跳机制,需要在应用层 自己实现心跳机制以检测长连接的有效性,从而高效维持长连接

综合主流移动IM产品,此处建议心跳检测时间 为4分钟
swoole中 如果想保持长时间连接(中间没有数据交互)不断开 , keepAlive不要打开,应用层实现心跳检测 heartbeat_check 即可

因为(Keep-Alive机制不会强制切断连接,如果连接存在但是一直不发生数据交互。Keep-Alive不会切断连接。而应用层实现的心跳检测 heartbeat_check 即便连接存在,但不产生数据交互的情况下,依然会强制切断连接。)

$serv->set(array(
‘heartbeat_check_interval’ => 120,
‘heartbeat_idle_time’ => 240,
));
上面的设置就是每120秒侦测一次心跳,一个TCP连接如果在240秒内未向服务器端发送数据,将会被切断。

所有为了保持长时间不断开,web端需要实现心跳,即如果没数据发送到服务器,每隔120秒向服务器发送空数据

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值