2016-05-10 22 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了解详情。

相关问题