我在聊天应用程序中使用smack客户端。一切都会好起来但是当连接由于某种原因中止时,我的服务器在线显示该用户JID。
我的问题是如何在断开连接后再次重新连接到服务器。我能够在服务线程中使用connection.isAuthenticated()方法捕获连接。但无法重新连接到服务器。
答案 0 :(得分:0)
如果客户端断开但仍然在线显示,您可以在服务器端(ejabberd)启用mod_ping模块以克服在线问题。这与TCP / IP的工作方式有关,而不是ejabberd特有的。通常,Linux配置为在2小时后检测连接丢失,客户端使用ReconnectionManager将应用程序重新连接到ejabberd服务器,或者您可以定义自己的处理程序以跟踪活动连接,如果未连接到服务器,则可以再次连接它。如何启用mod_ping在这里查看 - https://docs.ejabberd.im/admin/configuration/#modping