+
95
-

微信小程序如何实现websocket自动发送心跳包并且自动断线重连?

微信小程序如何实现websocket自动发送心跳包并且自动断线重连?

网友回复

+
15
-

在小程序utils目录下新建webSocket.js

// socket已经连接成功
var socketOpen = false
// socket已经调用关闭function
var socketClose = false
// socket发送的消息队列
var socketMsgQueue = []
// 判断心跳变量
var heart = ''
// 心跳失败次数
var heartBeatFailCount = 0
// 终止心跳
var heartBeatTimeOut = null;
// 终止重新连接
var connectSocketTimeOut = null;
var i=1
const url = ''//socket链接地址,需要在微信后台配置
var webSocket = {
  connectSocket: function () {
    // wx.showLoading({
    //   title: '',
    //   mask: true,
    // })
    socketOpen = false
    socketClose = false
    socketMsgQueue = []
    wx.connectSocket({
      url: 'ws://' +url+'/websocket/'+wx.getStorageSync('token'),
      // header: { 'ticket': wx.getStorageSync('token')},
      success: function (res) {
        if (res) {
          // 成功回调
          // console.log(res)
          // options.success && options.success(res);
        }
      },
      fail: function (res) {
        if (res) {
          // 失败回调
          // options.fail && options.fail(res);
        }
      }
    })
  },
 
  /**
   * 通过 WebSocket 连接发送数据
   * @param {options}
   *   data    String / ArrayBuffer    是    需要发送的内容
   *   success    Function    否    接口调用成功的回调函数
   *   fail    Function    否    接口调用失败的回调函数
   *   complete    Function    否    接口调用结束的回调函数(调用成功、失败都会执行)
   */
  sendSocketMessage: function (options) {
    if (socketOpen) {
      wx.sendSocketMessage({
        data: options.msg,
        success: function (res) {
          if (options) {
            options.success && options.success(res);
          }
        },
        fail: function (res) {
          if (options) {
            options.fail && options.fail(res);
          }
        }
      })
    } else {
      socketMsgQueue.push(options.msg)
    }
  },
 
  /**
   * 关闭 WebSock...

点击查看剩余70%

我知道答案,我要回答