如何在java中重新连接websocket?
我有一个简单的java WebSocket客户端。有时与WebSocket服务器的连接可能会丢失。如果连接丢失,如何自动重新连接如何在java中重新连接websocket?,java,websocket,Java,Websocket,我有一个简单的java WebSocket客户端。有时与WebSocket服务器的连接可能会丢失。如果连接丢失,如何自动重新连接 import javax.websocket.*; import java.net.URI; @ClientEndpoint public class WebsocketClientEndpoint { Session userSession = null; public WebsocketClientEndpoint(URI endpointURI) {
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服务器的连接可能会丢失。如果连接丢失,如何自动重新连接 重新连接不是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);
}
}
但是,您可以使用诸如“Tyrus”之类的客户端库,它们具有重新连接处理程序。
基本上,它有API来捕获诸如onDisconnect、OnConnectionFailure之类的事件,这些事件可用于重新连接
有关如何使用它,请参见此链接: