2017-02-17 95 views
0

我在我的聊天應用程序中使用smack客戶端。一切都會好起來的,但是當連接由於某種原因中止時,我的服務器正在爲該用戶JID在線顯示。雖然用戶未連接到服務器,但用戶仍處於聯機狀態。並未能重新連接到服務器

我的問題是如何在斷開連接後再次重新連接到服務器。我能夠在我的服務線程中使用connection.isAuthenticated()方法捕獲連接。但無法重新連接到服務器。

回答

0

您可以在服務器端(ejabberd)啓用mod_ping模塊來克服在線問題,如果客戶端斷開連接但仍然顯示在線。這與TCP/IP的工作方式有關,並不特定於ejabberd。一般情況下,Linux被配置爲在2小時之後檢測到連接丟失,客戶端使用ReconnectionManager將應用重新連接到ejabberd服務器,或者您可以定義自己的處理程序以跟蹤活動連接(如果未連接到服務器,則可以再次連接)。如何啓用mod_ping這裏檢查 - https://docs.ejabberd.im/admin/configuration/#modping