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. Fiddler初学笔记

    Fiddler简介 Fiddller官网: www.fiddler2.com Fiddler是客户端与服务器端的http代理,是目前最常用的http抓包工具之一. Fiddler能够监听客户端和服务器 ...

  2. bom-offset

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 使用UrlConnection请求一个url地址获取内容

    访问网络需要加Internet权限:android.permission.INTERNET 使用UrlConnection请求一个url地址获取内容:             //1.创建一个Url对 ...

  4. Java微信公众号服务器配置-验证Token

    一.填写服务器配置 首先我们需要在微信公众平台上填写服务器配置 重点内容    服务器地址URL(一定要外网能访问的到)        在我们提交配置的时候,微信会发送GET请求到URL上,      ...

  5. jquery-easyui环境的搭建及测试

    对于软件开发者来说,一个良好的前端框架不仅能够使页面优美可观而且还能够大大的提高开发效率.提高系统整体界面的美观,框架将常用的功能封装完成,减少工作量.前端框架目前也比较多,小编本次主要介绍下easy ...

  6. PHP的加密方法汇总

    PHP的加密主要有4种方法,除此之外还有一种是URL的加密和解密.希望可以对你们开发有用. 顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百度 ...

  7. MindSpore多元自动微分

    技术背景 当前主流的深度学习框架,除了能够便捷高效的搭建机器学习的模型之外,其自动并行和自动微分等功能还为其他领域的科学计算带来了模式的变革.本文我们将探索如何用MindSpore去实现一个多维的自动 ...

  8. suse 12 二进制部署 Kubernetets 1.19.7 - 第06章 - 部署kube-apiserver组件

    文章目录 1.6.部署kube-apiserver 1.6.0.创建kubernetes证书和私钥 1.6.1.生成kubernetes证书和私钥 1.6.2.创建metrics-server证书和私 ...

  9. 使用PHP利用phpmailer发送电子邮件

    先来几句废话:    phpMailer是一个非常强大的php发送邮件类,可以设定发送邮件地址.回复地址.邮件主题.html网页,上传附件,并且使用起来非常方便.     phpMailer的特点:  ...

  10. 反射、反射机制、类加载、Class类专题复习

    一.反射概念 1.反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息(比如成员变量,构造器,成员方法等等),并能操作对象的属性及方法.反射在设计模式和框架底层都会用到. 2. ...