2015-10-20 111 views
0

可能有客户端在收到消息后与服务器断开连接的情况。服务器不确定客户端是否收到消息并重新发送消息。现在,客户端如何识别此消息是新消息还是已经由它处理? XMPP是否将任何唯一标识符与每条消息关联以消除重复?XMPP如何处理重复的消息?

回答

1

服务器默认情况下不会重新传递邮件,只是因为如果客户端收到它,服务器“不确定”。发送到客户端==“已发送”。

但是为了获得更高的可靠性,可以使用XEP-0198扩展名。这避免了重复的消息,因为当客户端重新连接到服务器时,它会告诉服务器它收到了多少消息(节)。服务器将它与发送给客户端的节数进行比较。如果客户没有收到全部,它只会重新发送客户错过的那些。

该机制避免了必须为每个消息分配唯一的标识符。

+0

我从您分享的链接中了解到,唯一的ID与每个节相关联,它用于删除重复的节。我对么? Doc: “因为未确认的节可能已被另一方接收,重新发送它们可能会导致重复;尽管在所有节点上使用XMPP'id'属性,但无法阻止此协议中的此类结果节至少可以帮助预定的收件人清除重复的节。“ –