收件人在Ejabberd中突然断开连接时消息丢失

时间:2017-06-30 10:08:34

标签: xmpp ejabberd ejabberd-module ejabberd-api ejabberd-hooks

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

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

我正在使用Ejabberd 16.08。请建议我如何解决此问题。

1 个答案:

答案 0 :(得分:0)

假设有一个标准的c2s连接,我建议使用ejabberd支持的Stream Management,但也需要客户支持。这不会阻止"失去"消息,但当用户B没有干净地断开连接时,它将允许更快的检测和通知。

另一种方法是使用XMPP over BOSH,它具有许多可用的客户端库,具体取决于您的确切平台。 BOSH的行为与流管理非常相似,并且适用相同的警告。

由于互联网通信的性质,服务器认为要发送消息但客户端尚未收到消息,因此总会出现这种情况。在这种情况下,重新连接时,使用Message Archive Management可以帮助用户B同步客户端。