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);
      };
    },

ws请求定时的更多相关文章

  1. nginx支持webSocket ws请求

    服务端webSocket的java配置文件: @Override public void registerStompEndpoints(StompEndpointRegistry registry) ...

  2. 使用SoapUI生成WS请求报文

    WSDL地址示例:http://10.1.84.10:8100/webService/common/mail?wsdl   打开SoapUI,创建一个Project,输入wsdl地址就ok. 1.访问 ...

  3. axis2学习, ant 构建axis2 ws

    1,axis2安装(windows)   . 环境需求:jdk 1.5, tomcat 6, maven 2, ant . 下载(bin表示二进制文件):http://mirror.bjtu.edu. ...

  4. Flask(4)- flask请求上下文源码解读、http聊天室单聊/群聊(基于gevent-websocket)

    一.flask请求上下文源码解读 通过上篇源码分析,我们知道了有请求发来的时候就执行了app(Flask的实例化对象)的__call__方法,而__call__方法返回了app的wsgi_app(en ...

  5. flask的请求上下文源码解读

    一.flask请求上下文源码解读 通过上篇源码分析( ---Flask中的CBV和上下文管理--- ),我们知道了有请求发来的时候就执行了app(Flask的实例化对象)的__call__方法,而__ ...

  6. flask 请求上下文源码(转)

    本篇阅读目录 一.flask请求上下文源码解读 二.http聊天室(单聊/群聊)- 基于gevent-websocket 回到顶部 转:https://www.cnblogs.com/li-li/p/ ...

  7. flask 中使用 socket 遇到的坑

    很久没用博客园了,最近涉及到一个问题,需要向前端推送日志 考虑的方案两个,一个是定时ajax 但是这样效率太慢了,二是用socket 那看看有没有轮子咯,面向百度编程,有两个库可以使用 1.flask ...

  8. 【Node/JavaScript】论一个低配版Web实时通信库是如何实现的( WebSocket篇)

    引论 simple-socket是我写的一个"低配版"的Web实时通信工具(相对于Socket.io),在参考了相关源码和资料的基础上,实现了前后端实时互通的基本功能 选用了Web ...

  9. 利用WebSocket和EventSource实现服务端推送

    可能有很多的同学有用 setInterval 控制 ajax 不断向服务端请求最新数据的经历(轮询)看下面的代码: setInterval(function() { $.get('/get/data- ...

随机推荐

  1. JavaScript数据结构之链表

    链表相较于数组的优缺点 1. 链表在 插入.删除.移动数据效率比数组要高,数组插入.移动.删除数据需要改变没有数据的索引,而链表则只需要更改指针即可 2. 在查询方面,数组要优于链表,数组存储的数据是 ...

  2. SpringBoot 自定义配置

    有时候需要自己定义一些配置,比如SpringBoot没有提供Druid连接池的配置,需要我们自己写配置. 以在springboot中使用Druid为例. 依赖 <dependency> & ...

  3. Java.lang.Math类详解

    Math类位于Java.lang包中,包含用于执行基本数学运算的方法!Math类的所有执行方法都是静态方法,可以直接使用类名.方法名调用,如:Math.round() 常用的方法:Math.round ...

  4. element select失效问题 , vue刷新的两种方式

    changeSelect: function () { this.$forceUpdate(); }, 编辑一条记录,给select 赋值后就不动了, 原因是复制后组件需要刷新一下, 不然不能触发事件 ...

  5. MySQL手写代码相关变量

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11777682.html 手写一些SQL代码时候需要用到的关键字. DELIMITER, BEG ...

  6. 区区牛马蹉跎 ,不要向生活低下头 Linux的账号和管理

    账户和管理权限 1.管理用户账号和组账号 2.管理目录和文件的属性 1.Linux基于用户身份对资源访问进行控制:用户账号(超级用户.普通用户.程序用户) 组账号(基本组.附加组).UID (用户标识 ...

  7. 3.HTTP协议详解

    ### Web核心+HTTP协议 准备工作:XAMPP+PhpWindd+Aglieone HTTP协议简介 HTTP请求 最常用请求 GET请求获取URL所标识的资源 POST请求在URL所标识的资 ...

  8. Redis 源码简洁剖析 11 - 主 IO 线程及 Redis 6.0 多 IO 线程

    Redis 到底是不是单线程的程序? 多 IO 线程的初始化 IO 线程运行函数 IOThreadMain 如何推迟客户端「读」操作? 如何推迟客户端「写」操作? 如何把待「读」客户端分配给 IO 线 ...

  9. HMS Core机器学习服务助力Zaful用户便捷购物

    Zaful是近年来发展良好的出海电商平台,主打快时尚.在洞察其用户有购买街头海报.生活中同款衣物的需求后,Zaful联合HMS Core机器学习服务打造拍照购物服务.用户拍照后可在预设的商品图片库中搜 ...

  10. 搭建 NFS 服务 & 实时同步

    今日内容 NFS简介 实现 NFS 文件同步功能 NFS 配置详解 统一用户 搭建 web 服务 NFS 实现文件共享 内容详细 1.NFS 简介 1.1 介绍 实现多台 web 服务器可以共享数据资 ...