2014-09-20 106 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