クライアントサーバーアプリケーションがあり、クライアントはJavaデスクトップアプリケーションに基づいており、サーバーはエンドポイントが公開され、TomcatがデプロイされたWebアプリケーションです。
以下のシナリオ@OnClose
を処理します。@OnClose
メソッドに関しては、サーバーエンドポイントにメッセージを送信できますか?
クライアント接続が原因で閉じるシナリオを処理する必要があります
1.) インターネットドロップ接続
2.) システムが休止モードになります。
サーバーはクライアント接続を開くことができます。
これが私のクライアントコードです
@ClientEndpoint
public class ChatroomClientEndPoint {
Session session = null;
public ChatroomClientEndPoint() {
URI uri;
try {
uri = new URI("endpoint url");
ContainerProvider.getWebSocketContainer().connectToServer(this, uri);
System.err.println("Connection found");
} catch (Exception ex) {
System.err.println("No connection found-->" + ex);
}
}
@OnOpen
public void processOpen(Session session) throws MalformedURLException, IOException {
session.setMaxIdleTimeout(60000 * 60 * 24); //websocket session timeout =1 day
this.session = session;
}
@OnMessage
public void processMessage(String message) throws JSONException {
// on receiving messages from server, sends desktop notifications
}
public void disConnect() throws IOException {
sendMessage("close");
}
}
** このコードは既に開発されており、サーバーに近いメッセージを送信し、サーバーがそのセッションをリストから削除する@OnClose
ため、実装されていないと思います。
@OnClose
このような上記の障害の場合に役立ちます。