问题标签 [stream-management]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1229 浏览

xmppframework - Prosody 中的流管理 (XEP-0198)

我正在使用 Prosody 进行流管理。但是我遇到了一些问题。

如何确保在 prosody 上启用流管理?有什么命令可以在终端上测试吗?

我还尝试在mod_smacks.lua模块中添加模块。但我不知道如何在服务器上启用它。

我在 iOS 上使用 XMPPFramework 作为聊天客户端。已经有一种方法可以检查是否支持流管理,但到目前为止它总是返回错误。

请帮助我在韵律中启用流管理。

0 投票
1 回答
933 浏览

configuration - Ejabberd 似乎忽略了 resend_on_timeout

我是 Ejabberd 的新手,我一直在尝试对其进行配置,以便按照以下建议对连接丢失具有鲁棒性:死连接、消息丢失和过时的存在 流管理默认激活(我使用 ejabberd 15.07),我在 ejabberd.yml 中将 resend_on_timeout 设置为 true:

并且 mod_offline 被激活:

此外,管理 Web 界面确认 resend_on_timeout 设置为 true:

不幸的是,以下情况无法按预期工作:

  1. user_a 和 user_b 连接到 ejabberd
  2. user_b 告诉 ejabberd 他实现了XEP-0198:流管理
  3. user_b 在未正确断开与 Ejabberd 的连接的情况下失去了连接
  4. user_a 向 user_b 发送消息“测试消息”
  5. Ejabberd 检测到 user_b 没有确认消息

    /li>
  6. Ejabberd 向 user_a 发送错误消息,而不是为 user_b 离线存储消息

    /li>

(完整的日志在最后可用)

我确定我错过了一些东西,但我找不到什么。非常感谢您的帮助。

从第 4 步到第 6 步的完整 ejabberd 日志

2015-09-04 00:30:19.862 [debug] <0.466.0>@ejabberd_receiver:process_data:349 Received XML on stream = <<"Test message\nhttp://jabber.org/protocol/xhtml-im\">http://www.w3.org/1999/xhtml\" style=\"background-color:#e9e9e9;color:#000000;\">Test message\nhttp://jabber.org/protocol/chatstates\"/>\n">>

0 投票
1 回答
129 浏览

xmpp - XMPP XEP-0198 在 eJabberd 版本 2.1.10 中不起作用

有什么方法可以在 ejabberd 2.1.10 版中启用 XEP-0198 或流管理?

0 投票
2 回答
990 浏览

xmpp - ejabberd 中流管理的奇怪错误

我正在使用 ejabberd 的 iOS 上构建即时通讯应用程序。我目前正在测试流管理功能,特别是在大多数情况下似乎有效的恢复。但是有一个我不明白的情况,我可以通过以下步骤复制,考虑到设置:resume_timeout:30,resend_on_timeout:if_offline

  • 一开始客户端A和客户端B是连接的,没有连接其他资源
  • 客户端 B 以不干净的方式崩溃或断开连接
  • 客户端 A 开始非常快速地发送一堆消息(10+)
  • ejabberd 为每个发送的消息向 A 发送一个 ack,以确认消息已到达服务器
  • 崩溃后大约 20 秒,B 重新连接。此时 A 收到之前发送的每条消息的错误

我尝试使用 ejabberd 16.01。

这发生在 80% 的时间;有时 A 发送的消息会在 30 秒内重新连接时正确传递给 B。

我的问题是:

  • 这种行为正确吗?如果已经收到消息的确认,我希望不会向客户端 A 退回任何错误。
  • 由于resend_on_timeout设置为if_offline并且没有连接其他资源,我希望完全没有错误。我对么?
0 投票
1 回答
341 浏览

xmpp - 找出 smack 库中的 Log 来自哪里?

我是使用 smack 和 openfire 作为服务器来制作聊天应用程序的新手。

我想像whatsapp一样制作状态消息,如果用户发送消息,则首先发送的图标状态消息,下一个如果实现服务器为单粗,如果已交付则为双粗,依此类推。我在我的应用程序中使用该方案并且成功,除非当消息由服务器实现时,我想将我的图标状态更改为单粗,在我发送消息后我得到 Log RECV (0): <a xmlns='urn:xmpp:sm:3' h='5' />it Log 意味着消息已由服务器成功实现。我想知道它的日志来自哪里(创建日志的类),这样我就可以跟踪状态消息图标并将其更改为单粗?

我使用 Openfire 最新版本并 smack 4.1.5

0 投票
1 回答
210 浏览

xmpp - ejabberd:未确认 XML 节

在恢复 ejabberd 的流管理会话时,我得到以下日志:

这里 1 节未被承认,这是什么意思以及如何纠正它。

有时,接收方客户端没有收到很少的交付确认,这是那些节丢失的原因吗?

更新:会话期间未确认的节在连接恢复时再次交换。但是在某些情况下,某些节会丢失,因此发送确认不会反映在发送方客户端。

为流管理设置的参数:

超时恢复:120 秒

超时重发:真

由于某些节丢失,我可能会丢失任何配置吗?

0 投票
0 回答
932 浏览

android - 重新连接错误流管理 Smack

我在 smack library v4.1.5 (Android) 和 openfire v4.0.1 中发现了一个关于 XMPP 重新连接过程的非常大的问题(可能是我的?)。我以这种方式在客户端激活了流管理:

并以这种方式激活自动重新连接:

第一次成功连接并登录后,当互联网连接断开并且重新连接过程开始时,我收到以下错误:

重新连接管理器连接和身份验证非常好,但是我收到了之前的错误!我也尝试更改资源,但没有任何效果,它不起作用!有人可以帮助我理解什么是错的?

0 投票
2 回答
761 浏览

android - 流管理中的死连接消息和交付收据接收延迟 - MongooseIM 服务器 2.0.0

我在双方客户端或服务器中都启用了流管理。我有两个用户 A 和 B。两个用户都在线。然后用户 A 突然失去连接。但是 A 用户仍然在线出现在用户 B 和服务器上。在此期间,用户 B 在用户 A 上发送消息。这些消息不会丢失,但是当用户 A 再次出现在线时,它将在 2-3 分钟后收到这些消息。我将在离线存储和交付收据上收到消息节在 SM 存储上。此问题同样发生在一对一聊天和 mucLight 上。我需要定制任何 mongooseIM 模块吗?请指导我为什么用户在失去连接时会收到延迟消息。是否可以将 SM 存储更改为离线存储 (MAM)。这是相同问题的链接我在此链接上发现了相同的问题(https://www.ejabberd.im/faq/tcp) 但没有丢失我的消息,只是收到延迟。

smack-4.2在我的 Android 应用程序上使用 lib。下面的代码用于在XMPPTCPConnection.

这是我的模块ejabbered.cfg文件mod_stream_management

我还在我的配置文件中启用了以下模块

我在这里找到了很少的解决方案smack connect to xmpp server with previous stream id但它不适用于 mongooseIM-2.0 服务器。

提前谢谢你。