收藏
回答

websocket的一个问题请教?

app.js

initWebsocket() {
    var that = this
    this.checkVersion();
    //建立连接
    wx.connectSocket({
      url: this.mag.wsHost
 
    })
 
    //连接成功
    wx.onSocketOpen(function () {
      console.log('ws连接成功');
    })
 
    //连接失败
    wx.onSocketError(function () {
      console.log('ws连接失败');
    })
    wx.onSocketClose(function (res) { // 监听WebSocket关闭
      wx.connectSocket({
        url: that.mag.wsHost
      })
 
    })

  },



keepAlive() {

setInterval(

() => {

var obj = { 'wsType': 'KEEPALIVE' }

console.log("发送心跳包")

wx.sendSocketMessage({

data: JSON.stringify(obj),

});


}

, 30000);


},



上面的代码  初始化了websocket 并且第30秒会重连

现在有一个问题 比如我退出小程序后   超过30秒再进入小程序  websocket是断掉了的   请问有什么解决办法   因为app.js只会执行一次的

在线等

最后一次编辑于  2019-12-06
回答关注问题邀请回答
收藏

2 个回答

  • Geefib
    Geefib
    2019-12-09

    app.onshow的地方处理心跳,清空原来计时器,开始新的心跳计时器

    2019-12-09
    赞同 1
    回复 1
    • 扎根垄上
      扎根垄上
      2019-12-09
      请问这里的clearInterval具体要怎么写 写在哪里
      2019-12-09
      回复
  • 扎根垄上
    扎根垄上
    2019-12-09
    data: {
       //存储计时器
       setInter: ''

     },




    onShow: function () {

    clearInterval(this.setInter)

       var that = this;

       this.initWebsocket();

       this.keepAlive()

    },


    initWebsocket() {

       var that = this

    wx.connectSocket({

    url: this.mag.wsHost


    })


    //连接成功

    wx.onSocketOpen(function () {

    console.log('ws连接成功');

    })


    //连接失败

    wx.onSocketError(function () {

    console.log('ws连接失败');

    })

    wx.onSocketClose(function (res) {

    console.log('xxxx') // 监听WebSocket关闭

    wx.connectSocket({

    url: that.mag.wsHost

    })


    })

    },

    keepAlive() {

     this.setInter=

    setInterval(

    () => {

           var obj = { 'wsType': 'KEEPALIVE' }

    console.log("发送心跳包")

    wx.sendSocketMessage({

    data: JSON.stringify(obj),

    });


    }

    , 10000);

    }




    看这个写法有什么问题 试了一下还是不行的

    2019-12-09
    赞同
    回复 1
登录 后发表内容
问题标签