乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      webSocket+HeadBeat

       禁忌石 2022-02-16

      var ws;//websocket實(shí)例

      var heartCheck;

      var lockReconnect = false;//避免重復(fù)連接

      var wsUrl = "ws://116.62.207.100:8080/websocket";

      function createWebSocket(url) {

          try {

              ws = new WebSocket(url);

              initEventHandle();

          } catch (e) {

              reconnect(url);

          }

      }

      function initEventHandle() {

          ws.onclose = function () {

            console.log("webscoket關(guān)閉狀態(tài)即將重連...")

            reconnect(wsUrl);

          };

          ws.onerror = function () {

            console.log("webscoket異常狀態(tài)即將重連...")

              reconnect(wsUrl);

          };

          ws.onopen = function () {

            console.log("webscoket已經(jīng)鏈接 心跳檢測重置中...")

              //心跳檢測重置

              heartCheck.reset().start();

          };

          ws.onmessage = function (event) {

            console.log("【收到】:" + event.data);

            //如果獲取到消息,心跳檢測重置

            //拿到任何消息都說明當(dāng)前連接是正常的

            heartCheck.reset().start();

          }

      }

      function reconnect(url) {

          if(lockReconnect) return;

          lockReconnect = true;

          //沒連接上會一直重連,設(shè)置延遲避免請求過多

          setTimeout(function () {

              createWebSocket(url);

              lockReconnect = false;

          }, 2000);

      }

      //心跳檢測

      heartCheck = {

          timeout: 90000,//90秒

          timeoutObj: null,

          serverTimeoutObj: null,

          reset: function(){

              clearTimeout(this.timeoutObj);

              clearTimeout(this.serverTimeoutObj);

              return this;

          },

          start: function(){

              var self = this;

              //這里發(fā)送一個心跳,后端收到后,返回一個心跳消息,

              //onmessage拿到返回的心跳就說明連接正常

              send("HeadBeat");

              this.timeoutObj = setTimeout(function(){

                  console.log("【走到這一步的原因很簡單,因為你沒有收到心跳消息,那么N秒后將自動關(guān)閉重連】")

                  self.serverTimeoutObj = setTimeout(function(){//如果超過一定時間還沒重置,說明后端主動斷開了

                      ws.close();//如果onclose會執(zhí)行reconnect,我們執(zhí)行ws.close()就行了.如果直接執(zhí)行reconnect 會觸發(fā)onclose導(dǎo)致重連兩次

                  }, self.timeout)

              }, this.timeout)

          }

      }

      createWebSocket(wsUrl);

      //WebSocket發(fā)送請求

      function send(message) {

        if (!window.WebSocket) { return; }

        if (ws.readyState == WebSocket.OPEN) {

          console.log('【發(fā)送】:'+JSON.stringify(message))

          ws.send(JSON.stringify(message));

        } else {

          layui.use('layer', function(){

            var layer = layui.layer;

            layer.msg('您還未連接上服務(wù)器,請刷新頁面重試!',{icon: 0});

          })

        }

      }

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多