2017-02-17 17 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

関連する問題