专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

tigase 心跳包

【问题描述】

移动端的丢消息大概是这个样子。A和B通讯,A发了一条消息给服务器,服务器发给B,但是B网络不好掉线了,而服务器却不知道B退出了(B正常退出会给服务器发下线通知),所以消息丢失了。XMPP中有xep-0184协议(消息回执),A给B发消息,消息体中带一行代码(要求消息回执),当B收到消息后发送一条回执,证明我收到了。后来XMPP又有了xep-0198协议(流管理),断线后快速重链,同时判断一定时间收不到消息,就把消息写离线消息,减少丢消息情况。但是可能网络情况复杂,加上各种不确定因素,还会出现丢消息的问题。

【解决方案】————标黄内容可以不用配置

init.propretites 配置文件中添加如下内容:

#ping 心跳超时时间,1分钟

c2s/watchdog_timeout[L]=60000

#监督时间间隔,每30秒

c2s/watchdog_delay[L]=20000

#最大静止时间

c2s/max-inactivity-time[L]=120

#watchdog ping包类型

c2s/watchdog_ping_type=xmpp

【参数说明】

--watchdog_delay 心跳检测间隔时间,写检测,默认值10分钟,现在修改为30秒

--watchdog_ping_type watchdog ping包类型,写操作,whitespace和xmpp

--watchdog_timeout 心跳超时时间,默认29分钟,现改为1分钟

--max-inactivity-time 最大保活稳定时间,默认24小时,现改为2分钟

【相关原理】

服务器根据 watchdog_delay 配置时间对该客户端进行轮询监督,如果当前用户会话的最后传输时间(last transfer=当前时间减去最后发送或接收时间)大于(当前时间+max-inactivity-time 时间),则自动释放用户连接。如果最后传输时间(last transfer=当前时间减去最后发送或接收时间)大于 watchdog_timeout 时间,主动发心跳包,如果客户端不能回应,则断开该用户连接。(配置时,max-inactivity-time必须大于watchdog_timeout)

文章永久链接:https://tech.souyunku.com/29942

未经允许不得转载:搜云库技术团队 » tigase 心跳包

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们