Как переподключить websocket в Java? - PullRequest
0 голосов
/ 11 июня 2019

У меня есть простой клиент WebSocket в Java.Иногда соединение с сервером WebSocket может быть потеряно.Как автоматически переподключиться, если соединение потеряно?

import javax.websocket.*;
import java.net.URI;

@ClientEndpoint
public class WebsocketClientEndpoint {

Session userSession = null;

public WebsocketClientEndpoint(URI endpointURI) {
    try {
        WebSocketContainer container = ContainerProvider.getWebSocketContainer();
        container.connectToServer(this, endpointURI);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

@OnOpen
public void onOpen(Session userSession) {
    System.out.println("Opening websocket");
    this.userSession = userSession;
}

@OnClose
public void onClose(Session userSession, CloseReason reason) {
    System.out.println("Closing websocket");
    this.userSession = null;
}

@OnMessage
public void onMessage(String message) {
    System.out.println("Received message: "+ message);
}

public void sendMessage(String message) {
    this.userSession.getAsyncRemote().sendText(message);
}
}

Тестовое приложение

import java.net.URI;
import java.net.URISyntaxException;
public class TestApp {

public static void main(String[] args) {
    try {
        final WebsocketClientEndpoint clientEndPoint = new WebsocketClientEndpoint(new URI("ws://localhost:8080/websocket/api"));

        while (true) {
            Thread.sleep(30000);
        }

    } catch (Exception ex) {
        System.err.println("Exception: " + ex.getMessage());
    }
}
}

В Java есть простой клиент WebSocket и тестовый класс.Иногда соединение с сервером WebSocket может быть потеряно.Как автоматически переподключиться, если соединение потеряно?

1 Ответ

0 голосов
/ 11 июня 2019

Переподключение не является частью WebSocket Спецификации JSR 356 и должно быть реализовано путем написания определенной логики.

Однако вы можете использовать клиентские библиотеки, например ' Tyrus 'которые имеют ReconnectHandler.По сути, он имеет APIS для захвата событий, таких как onDisconnect, onConnectFailure, которые можно использовать для повторного подключения.

См. Эту ссылку, чтобы узнать, как его использовать: Tyrus Reconnect Handler

API Doc Here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...