当用户的数据连接因 tigase 断开时,我如何解决不获取 XMPP 状态更新的问题
Posted
技术标签:
【中文标题】当用户的数据连接因 tigase 断开时,我如何解决不获取 XMPP 状态更新的问题【英文标题】:How do I get around not getting XMPP presence updates when users' data connection drop with tigase 【发布时间】:2014-07-30 16:08:44 【问题描述】:我正在构建一个具有聊天功能的 android 应用程序,它使用一个 XMPP 服务器,它是 tigase。 我遇到了这个整洁的问题;当用户的数据连接断开时,在线状态仍显示为在线。我在 tigase 论坛上读到这是典型的行为。默认情况下,更新状态大约需要 10 分钟。
但是,我们都知道,像 Gtalk 这样的聊天应用程序曾经在这种情况下正确地显示存在。所以我的问题是:
这在 XMPP 中是否正常?什么技巧/黑客/解决方法将帮助我克服这个问题? (我已经尝试编辑init.properties文件并重启超时10s,但仍然没有响应)
tigase 是正确的答案吗?如果启动,我的用户群最多将有几千个用户,而改成更简单的 XMPP 服务器也没关系?
请求对等点的存在会强制服务器重新检查用户的连接状态吗?这会触发任何状态更新吗?
我的客户端库是 Asmack。 (如果有帮助的话)
提前致谢:)
【问题讨论】:
【参考方案1】:我实际上是 xmpp 的新手,我尝试使用 tigase 作为客户端库和 openfire 作为服务器,在简单的官方示例中,如果客户端使用类 tigase.jaxmpp.j2se.Jaxmpp 的 disconnect() 方法,则该客户端的服务器中显示的状态将处于离线状态(即不在客户端列表中),否则在客户端离开后状态将长时间处于在线状态。不知道 openfire 和 tigase 在这种客户离开时是否使用相同的机制。
【讨论】:
我下载了 tigase 的源代码,并在客户端通信中手动更改了计时器。我能够用这些计时器来实现这一点。我认为可以调整 init.properties 中的 c2s/XXXX 设置来做同样的事情。但这会为大型实现加载服务器。 @tdevinda 抱歉,从那时起我没有了解更多关于 tigase 客户端的信息。与aSmack相比,文档并不成熟。 不用担心。我仍然要在另一台服务器上复制它。我会在完成后立即发布结果。 @tdevinda 酷!祝你好运。以上是关于当用户的数据连接因 tigase 断开时,我如何解决不获取 XMPP 状态更新的问题的主要内容,如果未能解决你的问题,请参考以下文章
Xshell如何设置,当连接断开时保留Session,保留原文字
当所有连接断开时,启用 KeepAlive 的 C# Socket 不会发送