大家好,本人求助一个可能比较弱智的问题。
我在cocosCreator上做了一个Websocket通信,用的是原生Websocket,并自己写服务器实现了所有需求的通信的功能。在网页上测试都没有问题。
移植到微信开发者工具上测试后,因为使用了微信的Websocket的api。发现服务器无法识别发送出去的信息了。(我发送的都是二进制数据)
我仔细检查后,发现:服务器收到的信息的后面大半部分的每一字节都完全一样,但是开头变了。
在客户端我确实是动了一个地方,原来发送的数据类型为UInt8Array。在微信开发者工具上被告知必须发送ArrayBuffer或者String。于是我把UInt8Array转化成了ArrayBuffer:
if ((typeof msg).toString() != "ArrayBuffer") {
var a = new ArrayBuffer();
for (var i in msg) {
a[i] = msg[i];
}
//发送a
}
转化出来的ArrayBuffer和原先的UInt8Array都是一模一样的。但是服务器收到后的信息开头就变了。
比如服务器建立连接,握手都没有问题。然后发送一模一样的两个消息给服务器
服务器显示原来的开头是正常的
130, 144, 74, 235, 177, 155, 66, 107, 170, 137, 79, 138, 194, 255, 57, 138, 171, 155, 104, 235, 153, 155, ...(相同的字节)
现在变成了错误的
130, 128, 133, 54, 99, 4, 72, 84, 84, 80, 47, 49, 46, 49, 13, 10, 72, 111, 115, 116, 58, 32, ...(相同的字节)
希望有高人提携。
if ((typeof msg).toString() != "ArrayBuffer") {
//msg的type是UInt8Array
this._ws.send(msg.buffer);
} else {
//msg的type是ArrayBuffer
this._ws.send(msg);
}
请问楼主指的创建ArrayBuffer的方式不对是什么意思,要怎样创建?