我使用的是Wildfly 8.1,我实现了一个运行良好的Websocket服务器端点。
我可以毫无问题地推送和接收数据。(Javascript客户端)
现在我还需要一个java客户端来连接到另一个系统。
我的客户是这样的:
@ClientEndpoint
public class WebsocketClient {
public WebsocketClient() {
}
@OnOpen
public void onOpen(Session session) {
try {
System.out.println("Sending test message to endpoint: " + new Date());
session.getBasicRemote().sendText(name);
} catch (IOException ex) {
log.error(ex.getMessage(), ex);
}
}
@OnMessage
public void onMessage(String message, Session session) {
log.info("Received: " + message);
}
@OnClose
public void onClose(Session session, CloseReason closeReason) {
log.info("Disconnected: " + closeReason));
}
}
try {
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
String url = "ws://localhost:8080/test/wss/websocket_socket";
container.connectToServer(BlockchainWebsocketClient.class, URI.create(url));
} catch (DeploymentException | IOException e) {
e.printStackTrace();
}
连接正常,但我想知道如何断开连接?WebSocketContainer没有相应的方法。如何控制连接/断开连接/重新连接?
致以最良好的问候,m
container.connectToServer(...)
返回javax.websocket.Session实例,如果需要,可以使用它来调用session.close()
,这将断开当前客户端会话与服务器端点的连接。
Reconnect不是JSR 356-针对WebSocket的Java API的一部分,所以你必须自己实现它,或者你自己实现一些专有功能(Tyrus-其他JSR 356实现-有一种叫做"ReconnectHandler"的东西,WildFly也可能有)。