0

由于某些网络问题,收件人突然从 INTERNET 断开连接时消息丢失。在这种情况下,我想停止消息丢失。

示例:用户 A 和 B 在线并正在聊天。A向B发送消息。然后突然用户B失去了INTERNET连接,同时用户A仍在向B发送消息。服务器假设B仍然在线,因为不知道B有网络问题。

我正在使用 Ejabberd 16.08 。请提出如何解决此问题的方法。

4

1 回答 1

0

假设是标准的 c2s 连接,我建议使用Stream Management,它由 ejabberd 支持,但也需要客户端支持。这不会防止“丢失”消息,但是当用户 B 没有完全断开连接时,它将允许更快的检测和通知。

另一种选择是在 BOSH 上使用 XMPP,它有许多可用的客户端库,具体取决于您的确切平台。BOSH 的行为与流管理非常相似,同样需要注意。

由于互联网通信的性质,总会有这样的情况,服务器认为要发送一条消息,但客户端没有收到它。在这种情况下,它可以帮助使用消息存档管理在重新连接时同步用户 B 的客户端。

于 2017-07-05T17:06:26.197 回答