如何在小程序全局使用 webSocket

版权声明: https://blog.csdn.net/Gochan_Tao/article/details/83899895

如何在小程序全局使用 webSocket

1)首先在 app.js 中初始化socket, onLaunch() 中调用 initSocket()

// app.js

  globalData: {
      localSocket: {},
      callback: function() {}
  },
  
  initSocket() {
    let that = this
    that.globalData.localSocket = wx.connectSocket({
      //此处 url 可以用来测试
      url: `wss://echo.websocket.org/`
    })
    //版本库需要在 1.7.0 以上
    that.globalData.localSocket.onOpen(function(res) {
      console.log('WebSocket连接已打开!readyState=' + that.globalData.localSocket.readyState)

    })
    that.globalData.localSocket.onError(function(res) {
      console.log('readyState=' + that.globalData.localSocket.readyState)
    })
    that.globalData.localSocket.onClose(function(res) {
      console.log('WebSocket连接已关闭!readyState=' + that.globalData.localSocket.readyState)
      that.initSocket()
    })
    that.globalData.localSocket.onMessage(function(res) {
      // 用于在其他页面监听 websocket 返回的消息
      that.globalData.callback(res)
    })
  },
  
    //统一发送消息,可以在其他页面调用此方法发送消息
  sendSocketMessage: function(msg) {
    let that = this
    return new Promise((resolve, reject) => {
      if (this.globalData.localSocket.readyState === 1) {
        console.log('发送消息', msg)
        this.globalData.localSocket.send({
          data: msg,
          success: function(res) {
            resolve(res)
          },
          fail: function(e) {
            reject(e)
          }
        })
      } else {
        console.log('已断开')
      }
    })

  },

2)在其他页面发送 socket 消息和接受 socket 消息,如在 pageA

  // pageA.js
  // 发送和接收 socket 消息
  sendSocketMessage: function(msg) {
    let that = this
    return new Promise((resolve, reject) => {
      app.sendSocketMessage(msg)
      app.globalData.callback = function (res) {
        console.log('收到服务器内容', res)
        resolve(res)
      }
    })
  },

猜你喜欢

转载自blog.csdn.net/Gochan_Tao/article/details/83899895