问题标签 [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.
xmppframework - Prosody 中的流管理 (XEP-0198)
我正在使用 Prosody 进行流管理。但是我遇到了一些问题。
如何确保在 prosody 上启用流管理?有什么命令可以在终端上测试吗?
我还尝试在mod_smacks.lua
模块中添加模块。但我不知道如何在服务器上启用它。
我在 iOS 上使用 XMPPFramework 作为聊天客户端。已经有一种方法可以检查是否支持流管理,但到目前为止它总是返回错误。
请帮助我在韵律中启用流管理。
configuration - Ejabberd 似乎忽略了 resend_on_timeout
我是 Ejabberd 的新手,我一直在尝试对其进行配置,以便按照以下建议对连接丢失具有鲁棒性:死连接、消息丢失和过时的存在 流管理默认激活(我使用 ejabberd 15.07),我在 ejabberd.yml 中将 resend_on_timeout 设置为 true:
并且 mod_offline 被激活:
此外,管理 Web 界面确认 resend_on_timeout 设置为 true:
不幸的是,以下情况无法按预期工作:
- user_a 和 user_b 连接到 ejabberd
- user_b 告诉 ejabberd 他实现了XEP-0198:流管理
- user_b 在未正确断开与 Ejabberd 的连接的情况下失去了连接
- user_a 向 user_b 发送消息“测试消息”
Ejabberd 检测到 user_b 没有确认消息
/li>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">>
xmpp - XMPP XEP-0198 在 eJabberd 版本 2.1.10 中不起作用
有什么方法可以在 ejabberd 2.1.10 版中启用 XEP-0198 或流管理?
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
并且没有连接其他资源,我希望完全没有错误。我对么?
xmpp - 找出 smack 库中的 Log 来自哪里?
我是使用 smack 和 openfire 作为服务器来制作聊天应用程序的新手。
我想像whatsapp一样制作状态消息,如果用户发送消息,则首先发送的图标状态消息,下一个如果实现服务器为单粗,如果已交付则为双粗,依此类推。我在我的应用程序中使用该方案并且成功,除非当消息由服务器实现时,我想将我的图标状态更改为单粗,在我发送消息后我得到 Log RECV (0): <a xmlns='urn:xmpp:sm:3' h='5' />
it Log 意味着消息已由服务器成功实现。我想知道它的日志来自哪里(创建日志的类),这样我就可以跟踪状态消息图标并将其更改为单粗?
我使用 Openfire 最新版本并 smack 4.1.5
xmpp - ejabberd:未确认 XML 节
在恢复 ejabberd 的流管理会话时,我得到以下日志:
这里 1 节未被承认,这是什么意思以及如何纠正它。
有时,接收方客户端没有收到很少的交付确认,这是那些节丢失的原因吗?
更新:会话期间未确认的节在连接恢复时再次交换。但是在某些情况下,某些节会丢失,因此发送确认不会反映在发送方客户端。
为流管理设置的参数:
超时恢复:120 秒
超时重发:真
由于某些节丢失,我可能会丢失任何配置吗?
android - 重新连接错误流管理 Smack
我在 smack library v4.1.5 (Android) 和 openfire v4.0.1 中发现了一个关于 XMPP 重新连接过程的非常大的问题(可能是我的?)。我以这种方式在客户端激活了流管理:
并以这种方式激活自动重新连接:
第一次成功连接并登录后,当互联网连接断开并且重新连接过程开始时,我收到以下错误:
重新连接管理器连接和身份验证非常好,但是我收到了之前的错误!我也尝试更改资源,但没有任何效果,它不起作用!有人可以帮助我理解什么是错的?
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 服务器。
提前谢谢你。