• ws请求定时


    heartChechInit() {
          const _this = this;
          // 设置统筹管理
          let heartCheck = {
            timer: 0, // 定时器名称
            _obj: null, // ws
            _callback: null, // 执行函数
            _time: 30000, // 心跳间隔
            // 启动函数
            init: function (wsObj, callback) {
              // console.log("init");
              this._obj = wsObj;
              callback && (this._callback = callback);
              this.sayHi();
            },
            sayHi: function () {
              // 执行心跳
              clearTimeout(this.timer);
              this.timer = setTimeout(() => {
                if (1 == this._obj.readyState) {
                  this._obj.send(1); // 发送讯息
                }
              }, this._time);
            },
            clear: function (flag) {
              // 关闭
              // console.log("clear:" + this.timer);
              clearTimeout(this.timer);
            },
            onError: function () {
              // 出错
              // console.log("onError:", this.timer);
              this.clear();
              this._callback && this._callback();
            },
          };
          // 通讯地址
          let uri = `ws://${sessionStorage.getItem("heartCheckUrl")}/flow/notice/${
            _this.currentUserID
          }`;
          let ws = new WebSocket(uri);
          // 开始连接
          ws.onopen = (event) => {
            // console.log("ws onopen", event);
            MsgBegin && MsgBegin();
            heartCheck.init(ws, () => {
              console.log("reconnect...");
              ws = new WebSocket(uri);
            });
          };
          // 接收消息
          ws.onmessage = (event) => {
            // console.log("接收消息", event, ws);
            let reg = /[0-9]/;
            if (reg.test(event.data)) {
              _this.value = +event.data;
            } else {
              _this.value = 0;
            }
            heartCheck.sayHi();
          };
          // 连接关闭
          ws.onclose = (event) => {
            // console.log("ws close", event, ws);
            heartCheck.clear();
          };
          // 连接出错
          ws.onerror = (event) => {
            _this.value = 0;
            // console.log("ws error", event, ws);
            heartCheck.onError();
          };
          // 初始请求接收
          let MsgBegin = () => {
            ws.send(1);
          };
        },
  • 相关阅读:
    http 事务
    URI、URL、URN
    媒体类型(MIME类型)
    资源
    WEB客户端和服务器
    如何解决新浪微博返回结果中的中文编码问题
    新浪微博 使用OAuth2.0调用API
    新浪微博 授权机制研究
    hmac库 密钥相关的哈希运算消息认证码
    ValueError: Expecting property name: line 1 column 1 (char 1)
  • 原文地址:https://www.cnblogs.com/supermanYU/p/15819006.html
Copyright © 2020-2023  润新知