[英]How to send/read java ByteBuffer (websocket) from javascript client onmessage function
java中的服務器代碼:
@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 客戶端一起使用時,服務器代碼工作正常,因為它發送二進制數據。 當我在服務器端(從 java 代碼)讀取字符串數據時,Javascript 客戶端工作正常:
@OnMessage
public void onMessage(Session session, String message) {}
感謝您提供任何意見的建議。
我已經找到了問題的解決方案。
我使用 ByteBuffer.js 庫在 JavaScript 中發送/讀取 ByteBuffer 類型的數據:
webSocket.binaryType = "arraybuffer";
在用於讀取數據的函數 onmessage 中:
var d = event.data;
console.log(d.toString());
在發送數據的函數send中:
var bb = dcodeIO.ByteBuffer.wrap(text);
webSocket.send(bb.toArrayBiffer());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.