2016-05-10 24 views
0

我有一個使用javax.websocket的websocket設置,它似乎連接,但不會工作,它一直給出一個java.lang.IllegalStateException:二進制消息處理程序未找到websocket字符串onMessage,給出java.lang.IllegalStateException:找不到二進制消息處理程序

  final WebSocketContainer webSocketContainer = ContainerProvider.getWebSocketContainer(); 
      Session session = webSocketContainer.connectToServer(new Endpoint() { 
       @Override 
       public void onError(Session session, Throwable thr) { 
        // TODO Auto-generated method stub 
        super.onError(session, thr); 
        System.out.println("checkerWindow.DownloadMessages().new Endpoint() {...}.onError()"); 
        thr.printStackTrace(); 
       } 

       @Override 
       public void onOpen(Session session, EndpointConfig EndpointConfig) { 
        System.out.println("checkerWindow.DownloadMessages().new Endpoint() {...}.onOpen()"); 

        try { 
         //send login details 
         //login:<deviceid>:<secret>\n 
         session.getBasicRemote().sendText("login:"+deviceid+":"+secret+"\n"); 
        } 
        catch(Exception ex){ 
         System.err.println("Exception=" + ex.toString()); 
         ex.printStackTrace(); 
        } 
       } 

       @OnMessage 
       public void onMessage(String message) { 
        System.out.println("Received message: "+message); 
       } 

       @Override 
       public void onClose(Session session, CloseReason closeReason) { 
        System.out.println("checkerWindow.DownloadMessages().new Endpoint() {...}.onClose()"); 
       } 

      }, ClientEndpointConfig.Builder.create().build(), URI.create("wss://client.pushover.net/push")); 

我已經嘗試了ByteBuffer,但編譯器並不這樣。

回答

0

您應該定義接收二進制消息的方法。例如,

@OnMessage 
public void onMessage(byte[] message) { 
    ...... 
} 

JavaDoc of OnMessage annotation瞭解詳情。

相關問題