2016-02-13 186 views
1

服务器代码的Java字节缓冲区(的WebSocket)在Java中:如何发送/读取JavaScript客户端的onMessage功能

@OnMessage 
public void onMessage(Session session, ByteBuffer message) { 
    if (session.isOpen()) { 
     String msg = new String(message.array()); 
     System.out.println("Message from " + session.getId() + ": " + msg); 
     try { 
      session.getBasicRemote().sendBinary(ByteBuffer.wrap("I have got the message".getBytes())); 
     } catch (IOException ioe) { 
      System.out.println(ioe.toString()); 
     } 
    } else { 
     System.out.println("Session is not open"); 
    } 
} 

客户端代码中的Javascript:

webSocket = new WebSocket("ws://192.168.10.1:2525/myChat/chat"); 
    webSocket.binaryType = 'arraybuffer'; 
    webSocket.onopen = function(event) { 
     updateOutput("Connected!"); 
     connectBtn.disabled = true; 
     sendBtn.disabled = false; 
    }; 

    webSocket.onmessage = function(event) { 
     updateOutput(event.data); 
    }; 

注: 服务器的代码工作正常时,我将它与Web GL客户端一起使用,因为它发送的是二进制数据。

@OnMessage 
public void onMessage(Session session, String message) {} 

谢谢建议的任何意见:当我看到在服务器端 (Java代码)字符串数据 JavaScript客户端工作正常。

回答

0

我发现问题的解决方案。

我已经使用ByteBuffer.js库发送/读字节缓冲区类型的数据在JavaScript:

webSocket.binaryType = “arraybuffer”;

在功能的onMessage用于读取数据:

变种d = event.data; console.log(d.toString());

在功能发送用于发送数据:

变种BB = dcodeIO.ByteBuffer.wrap(文本); webSocket.send(bb.toArrayBiffer());

相关问题