websocket收不到数据bug

发送
sendWebSocketBinary: function (sender) {
if (!this._wsiSendBinary) { return; }
if (this._wsiSendBinary.readyState === WebSocket.OPEN) {
var buf = “Hello WebSocket中文”;
// var arrData = new Uint16Array(buf.length);
// for (var i = 0; i < buf.length; i++) {
// arrData[i] = buf.charCodeAt(i);
// }
this._wsiSendBinary.send(buf);
}

},


this._wsiSendBinary.onmessage = function (evt) {
var str = evt.data;

        respLabel.string = str;
        websocketLabel.textKey = i18n.t("cases/05_scripting/11_network/NetworkCtrl.js.6");
    };

在pc上能显示数据是string
打包的qqplay 收到数据是[object buffer] 不知道怎么解析

arraybuffer转string

function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint16Array(buf));
}

string转arraybuffer

function 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);
}
return buf;
}

兄弟还是不行
this._wsiSendBinary.onmessage = function (evt) {

        var ab2str = function (buf) {
            return String.fromCharCode.apply(null, new Uint16Array(buf));
        }
        var str = '';
        if (CC_QQPLAY) {
            str = ab2str(evt.data);
        }
        else {
            str = evt.data;
        }

        respLabel.string = str;

    };

是个空的

    this._wsiSendBinary.onmessage = function (evt) {

        var ab2str = function (buf) {
            return String.fromCharCode.apply(null, new Uint16Array(buf));
        }
        var str = '';
        if (CC_QQPLAY) {
            str = ab2str(evt.data);
        }
        else {
            str = evt.data;
        }

        respLabel.string = str;

    };

同样的问题,这是onmessage的返回数据

解决了么

用这个就可以了 event.data.readAsString(); event.data是这个对象https://hudong.qq.com/docs/engine/api/BK.Buffer.html

解决了 就是event.data.readAsString();