我正在使用App Android,我需要将手机连接到我的服务器MQTT ......
但我的手机可能会失去连接(电话:[FIN; ACK];服务:[FIN; ACK];电话:[ACK]);之后,当他发送[SYN]消息以将其连接到服务器MQTT时,服务器发送[RST,ACK] ......这时我的应用程序的服务处于活动状态。
在我的情况下,我必须重新启动我的服务器,如果我想我的手机可以重新连接,但是,我无法重启我的服务器(多手机可能,我需要实时性能)。
有没有可能连接我的手机而不重启我的服务器?
感谢您的时间。
最好的关注
纪尧姆
答案 0 :(得分:0)
我认为你的问题与我的问题类似。连接半闭。有关详细信息,请参阅http://www.codeproject.com/Articles/37490/Detection-of-Half-Open-Dropped-TCP-IP-Socket-Conne。
我解决这个问题的方法是:i)每5秒添加一次保持活动信息。从手机到服务器和ii)让服务器关闭连接,如果没有15秒的崩溃数据。请参阅http://www.forward.com.au/pfod/CheapWifiShield/index.html和www.pfod.com.au
MQTT包括keepAlives(PING请求消息),因此您只需修改客户端以指定short keepAlive间隔 见http://www.hivemq.com/blog/mqtt-essentials-part-10-alive-client-take-over 让MQTT服务器在停止获取数据或keepAlive消息后更快地关闭连接。
虽然以上链接说明 " 代理将关闭之前与同一客户端的连接(由相同的客户端标识符确定),并与新连接的客户端建立连接。此行为可确保半开连接不会妨碍同一客户端的新连接建立。"
所以你根本不应该遇到这个问题!!!