客户端互联网断开连接后,重新连接websocket / mqtt

时间:2019-02-12 16:12:33

标签: websocket flutter mqtt

我正在设置一个MQTT / Websockets服务器,我的客户端是一个不稳定的应用程序,它连接到主屏幕上的代理,在其他屏幕上,它发送和接收来自代理的消息。我对keepAlive的理解是客户端和服务器应该多久共享一次ping / pong,因此它们确保连接仍然有效。有人说,如果我的Flutter应用程序连接到3600 / 1小时keepAlive的主屏幕中的代理,并且假设我断开了2分钟的客户端与互联网的连接,则希望在其他屏幕上共享和接收消息,然后重新连接,它将不会发送/接收消息,也许我对keepAlive的理解不正确。好吧,一旦互联网连接重新建立并重新建立,我将如何构造我的应用程序/服务器以自动重新连接到互联网。

我也尝试了On.Disconnect方法,我注意到它永远不会被调用,而且该应用程序仍然认为它已连接到代理。 我在标签上提到了websockets,因为我可以在websockets上执行mqtt。

1 个答案:

答案 0 :(得分:0)

我看到没有人回应,所以我会尽力的(但是我也是新手)。

您还看过Flutter connectivity package吗?

从我对Mqtt规范的阅读来看,如果Mqtt客户端**在保持有效期内未收到与其PINGREQ的PINGRESP,则应该**断开TCP / IP连接**(即,不需要断开连接) )。

我的Flutter + Mqtt应用程序会在每次发送消息时检查连接状态,并在需要时重新连接。我不需要检查互联网是否丢失,但是我注意到在某些应用程序状态更改时连接丢失。主应用程序小部件。使用didChangeAppLifecycleState()收到通知,并在需要时发送虚拟消息。

因此,这不能完全回答您的要求,但是我希望它仍然有用。