zoukankan      html  css  js  c++  java
  • React---websocket断开重连

    前端:

    sockjs-client v1.0.0
    stomp.js v2.3.3
     
    import React, { Component } from 'react';
    import { withRouter } from 'react-router-dom';
    import { Modal, Button, message, notification } from 'antd';
    
    
    let socket;
    let stompClient = null;
    let origin = 'xxx';
    
    
    class Dialog extends Component {
      constructor(props) {
        super(props);
        this.state = {
          id:'',
          connectStatus: false,
        };
      }
    
      componentDidMount() {
        this.connect();
      }
    
      componentWillUnmount() {
        
      }
    
      connect() {
        socket = new window.SockJS(`${origin}/xxx`, [], {
          transports: 'websocket',
        });
        stompClient = window.Stomp.over(socket);
        stompClient.debug = null; //禁用调试功能
        stompClient.heartbeat.incoming = 10000;
        stompClient.heartbeat.outgoing = 20000;
        stompClient.connect({}, frame => {
          this.setState({ connectStatus: true }); //设置连接状态
          stompClient.send('/app/reception', { priority: 9 }, this.state.id);
          stompClient.subscribe('/topic/reception/' + this.state.id, reception => {
            let receptionInfo = JSON.parse(reception.body);
          });
        });
      //断网,锁屏,都会走到onclose   socket.onclose
    = () => { this.disconnect(); }; } disconnect() { if (stompClient !== null) { //主动关闭连接 stompClient.disconnect(); } this.setState({ connectStatus: false, }); setTimeout(() => { this.connect(); }, 1500); //1.5S后重连 } } }
  • 相关阅读:
    创建双向数据绑定 ng-model
    数据绑定指令
    ios操作系统输入完成后,键盘没有弹下去的问题
    anjularjs 指令(1)
    关于苹果手机模态框问题
    手机端页面中去除a标签点击时的默认样式
    ffsfsdsfsfd
    8、排列组合
    7、递归的二分查找
    6、递归
  • 原文地址:https://www.cnblogs.com/Super-scarlett/p/14356974.html
Copyright © 2011-2022 走看看