尽管用户未连接到服务器,但用户仍然在线。并且无法重新连接到服务器

User is still Online although user is not connected to the server. And failed to reconnecting to the server

我在聊天应用程序中使用 smack 客户端。一切都会好起来的,但是当连接由于某种原因中止时,我的服务器正在为该用户 JID 显示在线。

我的问题是断开连接后如何重新连接到服务器。我可以在我的服务线程中使用 connection.isAuthenticated() 方法捕获连接。但是无法重新连接到服务器。

如果客户端断开连接但仍显示在线,您可以在服务器端 (ejabberd) 启用 mod_ping 模块来解决在线问题。这与 TCP/IP 的工作方式有关,并不特定于 ejabberd。通常,Linux 配置为在大约 2 小时后检测连接丢失,客户端使用 ReconnectionManager 将应用程序重新连接到 ejabberd 服务器,或者您可以定义自己的处理程序来跟踪活动连接,如果没有连接到服务器,您可以连接它 again.How 启用 mod_ping 检查这里 - https://docs.ejabberd.im/admin/configuration/#modping