【问题标题】:XMPP multi device syncXMPP 多设备同步
【发布时间】:2015-07-13 04:37:47
【问题描述】:

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

  1. 在一台设备上登录。
  2. A 向 B 发送一些消息
  3. B 在他的第一台设备上登录并收到来自 A 的消息。
  4. B 在他的另一台设备上登录,但没有收到来自 A 的消息。(此设备将无法正确同步)

我已经启用了消息碳和归档。 有没有办法让我在 B 的其他设备上获取这些消息?

谢谢, 普奈特

【问题讨论】:

    标签: xmpp


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      XMPP Documentation中所述

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

      (https://www.rfc-editor.org/rfc/rfc6120#section-7.7.2.2)

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

      【讨论】:

        猜你喜欢
        • 2018-08-29
        • 2021-04-23
        • 2020-11-07
        • 2017-02-28
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多