美文网首页
谈下openfire心跳包检测的问题

谈下openfire心跳包检测的问题

作者: 思想黑客 | 来源:发表于2018-09-29 22:14 被阅读112次

最近在开发即时通讯客户端遇到了一个问题,就是网络正常的情况下,和openfire服务器正常通讯。如果长时间没接到消息,客户端和服务器的连接就会断开。经过测试,发现openfire每三分钟就会ping一次客户端,客户端会pong回应服务端。但是这样ping-pong几次后,发现客户端就接受不到服务器的ping信息了,而服务器发现客户端没pong,就把客户端的会话关闭了。这是上面那个问题的原因。至于为何客户端会接受不到服务器的ping,就是下面要谈的内容了。经过查找资料发现NAT超时是影响tcp寿命的重大因素。以下是由微信开发 团队提供的资料:

上面的意思是说心跳包间隔时间要小于NAT超时时间,才能防止长连接中断。

因此我把服务器发送心跳包的间隔改为90s一次,果然问题解决了。

当然这个问题不是最优解,比较好的方法可以是客户端采取智能发送心跳包的方式来维持长连接。具体可以参考以下这篇文章:

http://mp.weixin.qq.com/s/ghnmC8709DvnhieQhkLJpA

相关文章

  • 谈下openfire心跳包检测的问题

    最近在开发即时通讯客户端遇到了一个问题,就是网络正常的情况下,和openfire服务器正常通讯。如果长时间没接到消...

  • 5.心跳检测/心跳包

    心跳是什么? 顾名思义,心跳是判断一个事物生还是死的一个标准,在swoole里,心跳是指用来判断一个连接是正常还是...

  • openfire服务的安装(二)

    openfire服务的安装 1、首先下载OpenFire的Linux安装包openfire 4.1.5,下载地址h...

  • Socket心跳包机制与实现

    心跳包的发送,通常有两种技术 方法1:应用层自己实现的心跳包 由应用程序自己发送心跳包来检测连接是否正常,大致的方...

  • Socket心跳包机制

    <转自CSDN技术博客>心跳包的发送,通常有两种技术方法1:应用层自己实现的心跳包由应用程序自己发送心跳包来检测连...

  • Netty4 断线重连

    一 、实现心跳检测 原理:当服务端每隔一段时间就会向客户端发送心跳包,客户端收到心跳包后同样也会回一个心跳包给服务...

  • Netty4断线重连

    一 、实现心跳检测 原理:当服务端每隔一段时间就会向客户端发送心跳包,客户端收到心跳包后同样也会回一个心跳包给服务...

  • Netty 4.0 实现心跳检测和断线重连

    一、实现心跳检测 原理:当服务端每隔一段时间就会向客户端发送心跳包,客户端收到心跳包后同样也会回一个心跳包给服务端...

  • Ceph心跳机制

    1. 心跳介绍 心跳是用于节点间检测对方是否故障的,以便及时发现故障节点进入相应的故障处理流程。 问题: 故障检测...

  • springboot shutdown has been sto

    出现这个问题的原因在于springboot添加了websocket组件,并且配置的时候开启了心跳包,心跳包和spr...

网友评论

      本文标题:谈下openfire心跳包检测的问题

      本文链接:https://www.haomeiwen.com/subject/kcfioftx.html