日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

WebSocketDemo

 禁忌石 2022-02-16
//這是一個(gè)標(biāo)準(zhǔn)的demo
(function ($) {
    var $j = $;
    var ws;
    var msgObj = $j("#result");
    var port = "8900";
    var http = "192.168.10.253";
    var url = "ws://" + http + ":" + port;
    window.JSocket = {
        socket: null,
        userObject: null,
        init: function () {
            var support = "MozWebSocket" in window ? "MozWebSocket" : ('WebSocket' in window ? 'WebSocket' : null);
            if (support == null) {
                alert("您的瀏覽器不支持WebSocket!");
                msgObj.text("您的瀏覽器不支持WebSocket!");
                return false;
            }
            // if(!window.WebSocket){
            //     alert("您的瀏覽器不支持WebSocket!");
            //     msgObj.text("您的瀏覽器不支持WebSocket!");
            //     return false;
            // }
            this.connect();
        },
        connect: function () {
            try {
                ws = new WebSocket(url);  //, 'subprotocol'
                // ws.binaryType = "blob";
                if (ws.readyState === WebSocket.CONNECTING) {
                    console.log("正在連接WebSocket服務(wù)器...");
                    msgObj.text("正在連接WebSocket服務(wù)器...");
                }
                ws.onopen = this.onopen;
                ws.onmessage = this.onmessage;
                ws.onclose = this.onclose;
                ws.onerror = this.onerror;
            } catch (e) {
                console.log("Error:" + e);
                msgObj.text("Error:" + e.Message);
            }
        },
        disconnect: function () {
            if (ws != null && ws.readyState === WebSocket.OPEN) {
                ws.close();  //關(guān)閉TCP連接
            }
        },
        onopen: function (e) {
            //JSocket.sendMessage("Test!");
            console.log("open");
            msgObj.text("open");
            if (ws.readyState === WebSocket.OPEN) {
                console.log("已連接到WebSocket服務(wù)器");
                msgObj.text("已連接到WebSocket服務(wù)器");
            }
            // var THRESHOLD = 10240;
            // setInterval(function(){
            //     if(ws.bufferedAmount < THRESHOLD){
            //         JSocket.sendMessage("測試");
            //     }
            // }, 1000);
        },
        onmessage: function (e) {
            console.log("message");
            msgObj.text("message");
        },
        onclose: function (e) {
            var result = JSocket.getWebSocketState(ws);
            // console.log("close事件wasClean:" + e.wasClean + ",code:" + e.code + ",error:" + e.error + ",reason:" + e.reason + "," + result);
            msgObj.text("close事件wasClean:" + e.wasClean + ",code:" + e.code + ",error:" + e.error + ",reason:" + e.reason + "," + result);
            // 斷開后重新連接
            // if(ws.readyState !== WebSocket.OPEN){
            //     setTimeout(function(){
            //         JSocket.connect();
            //     }, 1000 * 3);
            // }
        },
        onerror: function (e) {
            console.log("error:" + e);
            // msgObj.text("error");
        },
        // WebSocket可以收發(fā)消息的類型有String、Blob和ArrayBuffer
        // readyState、bufferedAmount 和protocol。
        // bufferedAmount 特性檢查已經(jīng)進(jìn)入隊(duì)列,但是尚未發(fā)送到服務(wù)器的字節(jié)數(shù)
        sendMessage: function (msg) {
            if (ws != null && ws.readyState === WebSocket.OPEN) {
                if (msg == "" || msg == null || msg == "undefined") {
                    return false;
                }
                ws.send(msg);
                console.log(msg);
            } else {
                console.log("發(fā)送失敗!原因:可能是WebSocket未能建立連接!");
                msgObj.text("發(fā)送失??!原因:可能是WebSocket未能建立連接!");
            }
        },
        getWebSocketState: function (ws) {
            var result = "";
            switch (ws.readyState) {
                case 0:
                    result = "連接正在進(jìn)行中,但還未建立";
                    break;
                case 1:
                    result = "連接已經(jīng)建立。消息可以在客戶端和服務(wù)器之間傳遞";
                    break;
                case 2:
                    result = "連接正在進(jìn)行關(guān)閉握手";
                    break;
                case 3:
                    result = "連接已經(jīng)關(guān)閉,不能打開";
                    break;
            }
            return result;
        },
        log: function (s) {
            if (document.readyState !== "complete") {
                // log.buffer.push(s);
            } else {
                msgObj.html(s + "\n");
            }
        },
        jsonToString: function (json) {
            return JSON.stringify(json);
        },
        stringToJson: function (str) {
            try {
                str = str.replace(/\'/g, "\"");
                return JSON.parse(str);
            } catch (error) {
                console.log(error);
            }
        }
    };
})(jQuery);

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多