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

      

  • 相关阅读:
    函数式编程理解
    Java8 lambda表达式10个示例
    MD5进行文件完整性校验的操作方法
    加密算法和MD5等散列算法的区别(转)
    随笔
    瑕疵(bug)严重性定义
    无需Cygwin,如果没有在命令行,Eclipse编NDK
    BZOJ 1878 SDOI 2009 HH项链 树状数组 + 脱机处理
    Teamcity+SVN+VisualStudio在持续集成简明教程
    UVALive3713-Astronauts(2-SAT)
  • 原文地址:https://www.cnblogs.com/naxiaoming/p/14268022.html
Copyright © 2011-2022 走看看