xmpp - 如何在 ejabberd/XMPP 中获得发送/接收消息的确认?

标签 xmpp ejabberd

如何使用 XMPP framework 知道该消息正在传递给其他用户和 ejabberd , 我们使用 XEP-0184 Message Delivery Receipts 类,我们在发送消息时发送回执请求,但没有得到任何响应。

我的查询是我是否需要在服务器上配置任何东西(或 ejabberd.cfg 文件中的任何更改),或者我们需要做的任何客户端代码。

最佳答案

不,XEP-0184 是纯粹的客户端协议(protocol),因此无需在服务器上设置任何内容。

您没有收到任何确认的原因可能有:

  • 您的客户只是没有XEP-0184启用。
  • 根据您使用的 XMPP 库(在两个客户端上——发送者和接收者),发送者可能决定不要求收据 discovers (通过查询对等体的能力)它有XEP-0184关掉。

    可能更清楚一点:XEP 通常建议实现检查 XEP 定义的功能是否受支持,如果不支持则不要尝试使用它。并非所有的库和客户端都这样做,但有些会这样做。这意味着一些实现可能是这样的:好的,我被要求发送收据请求,所以
  • 在我即将联系的对等方上进行服务发现。
  • 检查是否有XEP-0184启用。
  • 如果没有,我会默默地不附上任何收据请求。

  • 一个特定的 XMPP 库是否自己做到这一点取决于“智能”的制作方式。
    如果通过 XMPP Framework你的意思是this library ,请尝试阅读它的源代码以查看它是否“智能”并询问对等方的上限,然后检查是否XEP-0184已启用。

    还要检查是否可以启用客户端交换的 XML 流的日志记录。检查它们是调试 XMPP 相关问题的最佳方式。

    关于xmpp - 如何在 ejabberd/XMPP 中获得发送/接收消息的确认?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20630926/

    相关文章:

    android - smack 4.2.0 错误 : IN AAAA yielded an error response NX_DOMAIN

    xmpp - 哪个 ejabberd 模块处理定向存在事件?

    Android xmpp MUC设置默认配置

    ejabberd - TCP 接受失败 : emfile

    mysql - "Failed TCP accept: emfile"在 Ejabberd

    ios - XEP-0363 : HTTP File Upload in Swift

    android - 如何从 ejabberd 服务器获取联系人列表

    javascript - 在javascript中遍历xmpp iq节

    ruby-on-rails - 将 XMPP 集成到 Rails 中需要什么?

    python - 我正在寻找一个允许与 Web 应用程序紧密集成的消息传递平台(如 XMPP)