使用QQ玩一玩 brickEngine 中的websocket

在使用 QQ玩一玩的websocket 時(shí)找不到纖細(xì)的使用說明文檔,這里給一份適配好的代碼。

function  VilWebSocket(){ 
    var mCallBack = callback;
    var mHost = host;
    var socketMsgQueue = [];
    var socketOpen = false;
    var socket = new BK.WebSocket(host);
    var that = this;

    this.send = function (msg) {
        if(socketOpen){
            socket.send(msg.buffer)
        }else{
            if (socketMsgQueue.length < 100) {
                socketMsgQueue.unshift(msg);
            }
        }
    };

    this.close = function () {
        console.log("websocket close");
        if(socket){
            socket.close()
        }
    };

    socket.onOpen = function(res) {
        socketOpen = true;
        console.log("[BK.WebSocket][connect]:" ,res);
        while (socketMsgQueue.length > 0) {
            that.send(socketMsgQueue.pop());
        }
        mCallBack.onConnect && mCallBack.onConnect(mHost);
    };

    socket.onClose = function(res) {
        socketOpen = false;
        console.log("[BK.WebSocket][onClose] case:",JSON.stringify(res));
        var e = {code:1000, message:" close normal"};
        mCallBack.onDisConnect && mCallBack.onDisConnect(mHost, e);
    };

    socket.onError = function(err){
        if(socket && socketOpen){
            socketOpen = false;
            socket.close();
        }
        var e = {code:err.getErrorCode(), message: err.getErrorString()};
        if(e.code === 65535){
            e.code = 1000;
        }
        mCallBack.onDisConnect && mCallBack.onDisConnect(mHost,e);
    };

    socket.onMessage = function (res, data) {
        var buf = data.data;
        buf.rewind();
        var ab = new ArrayBuffer(buf.length);
        var dataView = new DataView(ab);
        while (!buf.eof) {
            dataView.setUint8(buf.pointer, buf.readUint8Buffer());
        }
        mCallBack.onMsg && mCallBack.onMsg(dataView);
    };

    if(socket){
        socket.connect()
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容