XMPP多设备同步

时间:2015-05-03 20:45:17

标签: xmpp

我正在尝试使用XMPP开发消息传递应用程序。我正在尝试在每个用户的多个设备上实现聊天同步。但是我只能在记录的设备或登录的第一个离线设备上获取消息。不同的设备使用不同的资源,因此完整的jabber id不同。 情景是,

  1. 登录一台设备。
  2. A向B
  3. 发送一些消息
  4. B登录他的第一台设备,并收到来自A的消息。
  5. B登录到他的其他设备,但没有收到来自A的消息。(这是设备无法正常同步)
  6. 我已启用消息碳和存档。 有没有办法可以在B的其他设备上获取这些消息?

    谢谢, 普尼特

2 个答案:

答案 0 :(得分:0)

从服务器中检索存档的消息,以解决您的问题。 您可以使用自定义IQ从服务器获取存档的消息。 follow this format用于自定义IQ。

答案 1 :(得分:0)

为了参与即时消息传递和在线状态活动,客户端(即设备)应在服务器上建立会话。

根据XMPP Documentation

  

如果已经有一个同名的活动资源,则服务器   必须(1)终止活动资源并允许   新请求的会话,或者(2)禁止新请求的会话   并维护活动资源。服务器执行哪一个操作   尽管建议您执行案例1。在情况#1中,服务器应向活动资源发送流错误,终止XML流和基础TCP   连接活动资源,并返回类型为IQ的节   “结果”(表示成功)到新请求的会话。在#2的情况下,服务器应该向新请求的会话发送节错误,但应为此保留XML流   连接,以便新请求的会话有机会   在发送另一个资源标识符之前,先协商一个无冲突的资源标识符   请求建立会话。

https://tools.ietf.org/html/rfc6120#section-7.7.2.2

但是,如果您仍然想使用多个会话,则可以使用消息存档管理-XEP-0313