webSocket前端+webSocket封装

一、websocket基础

class MyWebScoket {
    
    
  constructor(socketUrl) {
    
    
    // super(socketUrl);
    this.onopenFn = null
    this.oncloseFn = null
    this.onmessageFn = null
    this.onerrorFn = null
    this.socketUrl = socketUrl
    this.socket = null
    this.init()
  }

  init() {
    
    
    let self = this
    let timeStep = new Date().getTime();
    self.socket = new WebSocket(self.socketUrl + timeStep);
    self.socket.onopen = function (event) {
    
    

      if (self.onopenFn) {
    
    
        self.onopenFn(event)
      }
    }
    self.socket.onmessageFn = function (event) {
    
    
      console.log(event, '连接关闭')
      if (self.onmessageFn) {
    
    
        self.onmessageFn(event)
      }
    }
    self.socket.onerrorFn = function (event) {
    
    
      console.log(event, 'websocket通信发生错误')
      if (self.onerrorFn) {
    
    
        self.onerrorFn(event)
      }
    }
    self.socket.oncloseFn = function (event) {
    
    
      console.log(event, '处理业务')
      if (self.oncloseFn) {
    
    
        self.oncloseFn(event)
      }
    }
  }
  close() {
    
    
    this.socket.close()
  }
}

export default MyWebScoket

2.使用(vue)

  import websocket from "./websocket.js"

  setWebsocket(){
    
    
      this.socket = new MyWebScoket(socketUrl)//socketUrl请求的地址
      this.socket.onopenFn = this.onopen.bind(this)
      this.socket.oncloseFn = this.onclose .bind(this)
      this.socket.onmessageFn = this.onmessage .bind(this)
      this.socket.onerrorFn = this.onerror.bind(this)
    },
    onopen(event){
    
    
      //业务处理
    },
    onclose(event){
    
    
      //业务处理
    },
    onmessage(event){
    
    
      //业务处理
    },
    onerror(event){
    
    
      //业务处理
    },

猜你喜欢

转载自blog.csdn.net/Web_Notes/article/details/131658795