【问题标题】:Xmpp Multi device message Read status SycXmpp 多设备消息 读取状态 Syc
【发布时间】:2021-09-10 01:50:54
【问题描述】:

我正在尝试实现一个消息应用程序,如 WhatsApp,它支持多设备和平台,如 android ios web 和电子应用程序。用户A可以在任何时间点从该平台的任何一个登录,例如可以在多个设备上同时在线

一个可以在网络和移动应用中同时在线

使用 XMPP carbon 能够在所有设备在线时同步消息。在一个平台上传递消息并且用户没有查看该消息。之后,第二台设备上的检查消息如何识别已读消息的状态

  • 在网络上收到一条消息,但未阅读该聊天记录
  • A 打开移动应用并同步来自 MAM 的新消息
  • MAM 同步消息没有任何读取状态

尝试使用 XMPP 消息标记无法解决这些问题 消息制作者不是 MAM 归档消息的一部分

使用的 XMPP 服务器是 ejabberd

【问题讨论】:

    标签: android ios xmpp ejabberd openfire


    【解决方案1】:

    正是出于这个原因,XEP-0333: Chat Markers 被创建:

    摘要:本规范描述了在聊天中标记最后接收、显示和确认的消息的解决方案。

    后来,从相同的规范:

    送达和已读回执的概念已被 iMessage、Google Hangouts 和 Blackberry Messenger 等其他消息服务推广。这些服务提供了消息何时被传递到任何收件人资源以及(可选)何时被阅读的视觉指示。这些视觉指示(在此称为“聊天标记”)在所有发送者和接收者的资源之间自动同步,因此聊天状态始终是一致的。如果一个或多个资源未连接,它可以在重新连接时从消息存档中获取聊天标记。

    任何支持 MAM 的服务器都应该支持它,所以这应该包括 ejabberd。

    【讨论】:

    • 感谢您的回复,我可以发送和接收聊天标记,但存档聊天标记存在问题。默认情况下,ejabberd 不存储聊天标记(也许我错了),在添加带有标记消息 jabber 存储标记的 标记后,它将所有标记保留在存档中。正因为如此,每条消息都多了一条 read status message 。这是正确的方式@Wojtek
    • 是的,它会在存档中造成一定的开销,但这是“设计使然”。
    猜你喜欢
    • 2011-04-05
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 2016-09-22
    • 2012-03-30
    • 2015-08-06
    • 2015-07-13
    相关资源
    最近更新 更多