2014-09-20 105 views
0

我使用的是Wildfly 8.1,我实现了一个Websocket Server端点,它工作得非常好。Websocket ClientEnpoint断开

我可以毫无问题地推送和接收数据。 (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没有这方面的方法。我如何控制连接/断开/重新连接?

最好的问候, 米

回答

0
container.connectToServer(...) 

回报javax.websocket.Session例如,你可以用它来调用session.close()如果你想 - 应该从服务器端点断开当前客户端会话。

重新连接不是JSR 356的一部分 - 用于WebSocket的Java API,所以你必须自己实现它或你的一些专有功能(Tyrus - 其他JSR 356实现 - 有一个叫做“ReconnectHandler”的东西,WildFly也可能有一些东西)。

+0

我明白了。我完全忽略了session.disconnect(),虽然我在编写服务器端点时使用了它。 :)感谢战利品! – mkuff 2014-09-21 08:10:13