【问题标题】:How to reconnect websocket in java?如何在java中重新连接websocket?
【发布时间】:2019-06-11 21:45:43
【问题描述】:

我在 java 中有一个简单的 WebSocket 客户端。有时与 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 服务器的连接可能会丢失。如果连接丢失如何自动重新连接?

【问题讨论】:

    标签: java websocket


    【解决方案1】:

    Reconnect 不是 WebSocket JSR 356 Specs 的一部分,必须通过编写特定的逻辑来实现。

    但是,您可以使用具有 ReconnectHandler 的客户端库,例如“Tyrus”。 基本上,这有 APIS 来捕获事件,如 onDisconnect , onConnectFailure 可用于重新连接。

    查看此链接了解如何使用它:Tyrus Reconnect Handler

    API Doc Here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      • 2014-04-21
      相关资源
      最近更新 更多