收藏
回答

SocketTask.onMessage()在已经关闭的页面仍然会执行?

在onshow中调用socket.onMessage(),每打开一次页面,就算关闭当前页面,再次进入,会多次执行。

操作步骤:

1、 点击首页 进入 B页面 ,点击,第一次正常

2、关闭页面返回首页, 再次重复1操作,onshow中的socketTask.onMessage()回调会执行两次

3、每重复一次1,2,onshow中的socketTask.onMessage()回调会多执行一次


代码片段

https://developers.weixin.qq.com/s/5bb0pjm17rh6

最后一次编辑于  2020-05-13
回答关注问题邀请回答
收藏

5 个回答

  • 一去二三里
    一去二三里
    2021-04-20

    要解决这个问题很简单

    // 监听返回的这个方法绑定一次即可

    socket.onMessage(res => {

    // 全局的方法

    that.gData.msgBack(res)

    })


    这样在任何页面 socket.send之前 先重新定义一下 that.gData.msgBack = function(res){....即可}

    that = this, gData是全局变量,不是当前页的

    2021-04-20
    有用 2
    回复 4
    • 磐石
      磐石
      2023-03-09
      是的可以写一个方法:
      2023-03-09
      回复
    • 磐石
      磐石
      2023-03-09回复磐石
      不要写成
      2023-03-09
      回复
    • 蒋锡山
      蒋锡山
      11-15
      正解。我来补全怕有人看不懂。app.js里面
      that.globalData.backmsg= (res) => {
                  console.log( res.data);
                  // 在这里处理接收到的消息,根据业务需求进行相应操作
              }
              socket.onMessage(res=>{
                  that.globalData.backmsg(res)
              })
       globalData: {        
              backmsg:null,
          }
      业务页面
        onReady: function () {
             app.globalData.backmsg=function(res){
                 console.log(JSON.parse(res.data))
      }
      }
      代码就这样,说明一下,当打开业务页面之后websocket消息回调绑定到了业务页面。关闭还是在上次打的业务页面执行。再多次进出入该页面,全局也只会有一个onMassage监听事件现运行。如果要多业务页面分别执行的话,目前我是重置websocket再执行其它的页面功能。不关闭就会出现多监听事件,就算不行重置也最多5个逻辑页面。
      11-15
      回复
    • 蒋锡山
      蒋锡山
      11-15
      或者只在app.js中做消息处理去绑定业务页面DATA,其它页面共用一个websocket连接也是可以。
      11-15
      回复
  • 乾矛
    乾矛
    2021-01-07

    请问有遇到过, 从消息通知中点击跳转到小程序中, 第三方服务的 socket 连接似乎有问题, 报这个错误. 有否办法解决?

    2021-01-07
    有用
    回复 1
    • 蒋锡山
      蒋锡山
      11-15
      断线重连问题。不app.js中不要设置onshow onhide onunload,前提是你在app.js创建的连接。如果是业务页面 用wx.relanch刷新页面
      11-15
      回复
  • 拟歌先敛
    拟歌先敛
    2020-09-22

    请问解决了吗 怎么解决的啊

    2020-09-22
    有用
    回复
  • 空白格
    空白格
    2020-05-13

    我也发现了,即使A页面已经onUnload,A页面的onMessage会重复执行;随着onUnload次数增加,重复次数增加

    2020-05-13
    有用
    回复 3
    • 张三李四
      张三李四
      2020-07-28
      兄弟。咋解决这个问题。
      2020-07-28
      回复
    • Luyc
      Luyc
      2020-08-26
      兄弟,可以看看你的代码吗?我这边一直报错,就没连上过
      2020-08-26
      回复
    • Luyc
      Luyc
      2020-08-26回复张三李四
      能看看你代码吗?我的一直连不上,这个一直报错Connection closed before receiving a handshake response,还提示:未完成的操作
      2020-08-26
      回复
  • 是小白啊
    是小白啊
    2020-05-12

    麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    2020-05-12
    有用
    回复 1
    • 岩。
      岩。
      2020-05-13
      已经重新编辑问题,代码片段也加上了,麻烦看一下
      2020-05-13
      回复
登录 后发表内容
问题标签