ccc 升级到1.7版本 XMLHttpRequest 发送arraybuffer 数据长度不对

浏览器下 正常 模拟器中 发送出去的数据长度是1
xhr.open(type, url, true); cc.log("发送数据到web:" + msg, msg.byteLength); xhr.send(msg);

发送前 输出数据也没问题
发送数据到web:[object ArrayBuffer] 28

发送的数据 转成 Int8 如下:

0 20 49 53 49 49 55 56 56 57 49 49 56 57 54 95 56 56 49 51 49 52 0 4 49 50 51 52

抓包 发送的数据

Body 1 bytes

mac下 length 是undefined

问题原因就是 mac下ArrayBuffer 的 length是undefined

你这个msg是怎么创建出来的?能详细一点么?

1.7.0中是有个bug,就是如果创建一个大的ArrayBuffer,然后通过创建的uint8array的内容只是ArrayBuffer中的一部分而不是完整的,那么uint8array并不支持偏移。

如果是这个问题,则早在1.7.1中修复了,因为1.7.0的代码冻结,所以当时没有合并进1.7.0.

可以参考这两个PR的修改或者同步v1.7-release分支

https://github.com/cocos-creator/cocos2d-x-lite/pull/974

https://github.com/cocos-creator/cocos2d-x-lite/pull/989

var res = this._data.buffer.slice(0, this.position);
我是从一个ArrayBuffer中slice出来的

1.71 大概什么时候发布?

估计至少得2周吧,你可以先合并一下这两个PR或者同步分支解决问题。