[]我用laya.websocket通信 二进制数据, 服务器对二进制数据进行解析,解析出来不是预期,请问我哪里写错了? 代码如下
var str = new String("大家好,这是websocket通信!");
console.log("str.length*2:" + str.length*2);
var b = new ArrayBuffer(20 + str.length*2);
var dv = new DataView(b, 0);
dv.setUint16(0, str.length*2, false);
dv.setUint16(2, 0, false);
dv.setUint16(4, 0, false);
dv.setUint16(6, 0, false);
dv.setUint16(8, 123, false);
dv.setUint16(10, 0, false);
dv.setUint32(12, 0, false);
dv.setUint32(16, 0, false);
console.log("befor new Uint16Array(b, 20, str.length)");
var context = new Uint16Array(b, 20, str.length);
for (var i=0, strLen=str.length*2; i<strLen; i++) {
context = str.charCodeAt(i);
}
console.log("copy end");
this.socket.send(b);
console.log("send end");
this.socket.flush();
console.log("str.length*2:" + str.length*2);
var b = new ArrayBuffer(20 + str.length*2);
var dv = new DataView(b, 0);
dv.setUint16(0, str.length*2, false);
dv.setUint16(2, 0, false);
dv.setUint16(4, 0, false);
dv.setUint16(6, 0, false);
dv.setUint16(8, 123, false);
dv.setUint16(10, 0, false);
dv.setUint32(12, 0, false);
dv.setUint32(16, 0, false);
console.log("befor new Uint16Array(b, 20, str.length)");
var context = new Uint16Array(b, 20, str.length);
for (var i=0, strLen=str.length*2; i<strLen; i++) {
context = str.charCodeAt(i);
}
console.log("copy end");
this.socket.send(b);
console.log("send end");
this.socket.flush();
没有找到相关结果
已邀请:
要回复问题请先登录
1 个回复
moketao
赞同来自:
建议还是用 protobuf 压缩率未必比自己写的差。