由于某些网络问题,收件人突然从 INTERNET 断开连接时消息丢失。在这种情况下,我想停止消息丢失。
示例:用户 A 和 B 在线并正在聊天。A向B发送消息。然后突然用户B失去了INTERNET连接,同时用户A仍在向B发送消息。服务器假设B仍然在线,因为不知道B有网络问题。
我正在使用 Ejabberd 16.08 。请提出如何解决此问题的方法。
由于某些网络问题,收件人突然从 INTERNET 断开连接时消息丢失。在这种情况下,我想停止消息丢失。
示例:用户 A 和 B 在线并正在聊天。A向B发送消息。然后突然用户B失去了INTERNET连接,同时用户A仍在向B发送消息。服务器假设B仍然在线,因为不知道B有网络问题。
我正在使用 Ejabberd 16.08 。请提出如何解决此问题的方法。
假设是标准的 c2s 连接,我建议使用Stream Management,它由 ejabberd 支持,但也需要客户端支持。这不会防止“丢失”消息,但是当用户 B 没有完全断开连接时,它将允许更快的检测和通知。
另一种选择是在 BOSH 上使用 XMPP,它有许多可用的客户端库,具体取决于您的确切平台。BOSH 的行为与流管理非常相似,同样需要注意。
由于互联网通信的性质,总会有这样的情况,服务器认为要发送一条消息,但客户端没有收到它。在这种情况下,它可以帮助使用消息存档管理在重新连接时同步用户 B 的客户端。