我的要求如下
第1步
第2步
Java类
@ServerEndpoint("/testwebsocket")
public class WebSocketTest {
@OnMessage
public void onMessage(ByteBuffer bytedata, Session session) throws IOException, InterruptedException {
//session.getBasicRemote().sendText("replay from server for :" + bytedata);
System.out.println("echoBinary: " + bytedata);
String v = new String(bytedata.array(), "UTF-8");
for (byte b : bytedata.array()) {
System.out.print(b);
}
session.getBasicRemote().sendBinary(bytedata);
}
接收的Javascript代码
function onMessage(event) {
if (event.data instanceof ArrayBuffer){
alert("onMessage if ");
var strReceived = String.fromCharCode.apply(null, new Uint16Array(event.data));
document.getElementById('messages').innerHTML += '<br />' + 'receieved' + event;
}
else
{
alert("onMessage else ");
document.getElementById('messages').innerHTML += '<br />' + event.data;
} }
发送的Javascript代码
//sending arraybuffer
function bytedata() {
//alert('I am in bytedata');
var str = document.getElementById('bytedataTextFeild').value;
var arrayByte = str2ab(str);
websocket.send(arrayByte);
return false;
}
//creating arraybuffer from string
function str2ab(str) {
//alert('I am in str2ab ' + str);
var buf = new ArrayBuffer(str.length * 2); // 2 bytes for each char
var bufView = new Uint16Array(buf);
for (var i = 0, strLen = str.length; i < strLen; i++) {
bufView[i] = str.charCodeAt(i);
document.getElementById('messages').innerHTML += '<br />'
+ str.charCodeAt(i);
}
return buf;
}
浏览器
jsp textbox String传递 - &gt; 你好 已发送数据 72
101
108
108
111 收到的数据 [object Blob] - &gt; 我想要这个&#34;你好&#34;