zoukankan      html  css  js  c++  java
  • WebSocket使用方法

     
    /*****************websocket用法start*******************/
    // 判断页面有没有存在websocket连接
    if (window.WebSocket) {
      let ws = new WebSocket("ws://xx.xxxx.xx") // 与后端配置ip端口一致(连接websocket)
       ws.onopen = function() {
         console.log("服务器连接成功")
       }
      ws.onclose = function() {
        console.log("服务器连接关闭")
        reconnect()
       }
      ws.onerror = function(e) {
        console.log("服务器连接出错", e)
        reconnect()
      }
      ws.onmessage = function(e) { // 接收服务器返回的数据
        console.log(e.data)
      }
    } else {
      console.log('抱歉,您的浏览器不支持Websocket协议!')
    }
    /*****************websocket用法end*******************/
    let ws = null
    let time = null
    let date = null
    let lockReconnect = false
    let url = ws://xxx.xxxxxx.xxx
    // 重连webscoket
    function reconnect(){
      if (lockReconnect) return;
      lockReconnect = true
      time && clearTimeout(time)
      time = setTimeout(function(){
        createWebSocket()
        lockReconnect = false
      }, 4000)
    }
    // 创建websocket连接
    function creatWebSocket() {
      if (window.WebSocket) {
        try { // 尝试连接websocket
          ws = new WebSocket(url)
          init()
        } catch { // 连接失败,重新连接
          reconnect()
        }
      } else {
        console.log('抱歉,您的浏览器不支持webscoket协议')
      }
    }
    // websocket初始化
    function init() {
      ws.onopen = function() {
        ws.send(JSON串) // 向后端发送数据
        start() // 一段时间后关闭连接
      }
      ws.onclose = function() { // 关闭服务后重新连接
        reconnect()
      }
      ws.onerror = function(e) { // 报错重连
        reconnect()
      }
      ws.onmessage = function(e){ // 接收成功,心跳检测
        start()
      }
    }
    // 心跳检测,即间隔一段时间后关闭连接,再次尝试连接
    function start() {
      date && clearTimeout(date)
      date = setTimeout(function() {
        ws.close()
      }, 600000)
    }
    

      

  • 相关阅读:
    Scripts.Render 索引超出了数组界限
    AutoFac使用方法总结
    MFC中打开一个获取路径的对话框
    MFC中自定义消息
    获得窗口句柄的方法
    App Doc View Frame中指针的获取
    MFC中菜单的命令响应顺序
    机械设计软件编写心得
    对SVD奇异值分解的理解
    安装win8+Ubuntu14.04双系统的经验总结
  • 原文地址:https://www.cnblogs.com/naxiaoming/p/14268022.html
Copyright © 2011-2022 走看看