收藏
回答

sendSocketMessage: fail taskID not exist

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug sendSocketMessage 和 SocketTask.send 客户端 7.0.4.43 2.7.0

//创建连接

if (!this._socketTask || this._socketTask.readyState!=1) {

  this._socketTask = wx.connectSocket({
    url: option.url,
    header: {
      ...option.header,
      'content-type': 'application/json'
    },
    method: 'GET',
    fail: function(res){
      self._isLogin = false
      self.reConnect()
    }
  }) 
}
sendHeartBreakMsg() {
    let self = this

    try{

     //wx.sendSocketMessage ({})使用sendSocketMessage 同样会出现

      self._socketTask.send({
        data: 'HB_'+wx.getStorageSync('loginInfo').token,
        success: (e) => {
          // console.log('HB')
        },
        fail: (res) => {
          console.log(res, self._socketTask, self._options, self._socketTask.readyState)
          if (self._socketTask && self._socketTask.readyState != 1) {
            self.reConnect()
          } else if(!self._socketTask) {
            self.createConnection()
          }
        }
      })
    }catch(e){
      console.log(e)
    }
  }

错误日志已上传2019-05-21

正常connectSocket创建连接,测试使用两种方法发送message:sendSocketMessage / socketTask.send 发送。 一切在3-5分钟内是好的。切到后台,回到微信连天页面,再切回小程序,消息还是正常发送。操作3-5分钟后,发送消息就会报 sendSocketMessage: fail 。taskID not exist。此时websocket是连通的,readystate是open状态。我就想问一下这个报错是什么意思?导致sendSocketMessage一直报错。只有关闭微信重开才可以解决。kill吊销程序重启才能解决。 手机:iphoneXr IOS 12.2

微信版本: 7.0.4

基础库版本:2.7.0





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

4 个回答

  • ShinBlueCat
    ShinBlueCat
    05-24

    这里看日志是 切后台一段时间以后 socket就被关闭了

    可以监听socket的close事件,然后重新创建socket

    05-24
    赞同
    回复 1
    • Geefib
      Geefib
      05-24

      恩恩,重新创建的socket也是成功的,readystate也是1,open状态。但是发不出消息,报 sendSocketMessage: fail 。taskID not exist。,如截图(19:19分的时候)。我为了保持socket一直在线,会每隔3秒发一次心跳,心跳发送就是报这个错呢,日志中看不到发送消息失败吗?

      05-24
      回复
  • 社区技术运营专员-小柿子
    社区技术运营专员-小柿子
    05-22

    错误日志已上传2019-05-21=>麻烦重新复现并提交下日志以及提供提交时候的微信号以及具体时间

    05-22
    赞同
    回复 3
    • Geefib
      Geefib
      05-22

      错误日志已上传2019-05-21微信号:jppppp_

      发生时间:19:00-19:30 出现过好多次(大于10次)

      05-22
      回复
    • Geefib
      Geefib
      05-23

      有消息吗?还需要提供什么资料吗?

      05-23
      回复
    • 社区技术运营专员-小柿子
      社区技术运营专员-小柿子
      05-23回复Geefib

      处理中,有结果会及时同步

      05-23
      回复
  • Alan
    Alan
    06-11

    这个巨坑,其实是这样的,小程序websocket在连接超时或者网络切换(4g切换3g,3g切换2g)的时候,webscokt的回调函数存在异常。测试下来发现小程序websocket会先走onerror回调,wss协议这时候会关闭该连接,导致taskID已经被清空,但是后面又回回调onopen这个生命周期,此时readystate变为1。解决方案目前想到的就是强制重连,也希望微信官方能早日修复该bug

    06-11
    赞同 1
    回复 7
    • 良
      06-13

      你能复现一下这个场景,然后上传一下日志,提供一下你的微信号和复现的时间点吗?

      06-13
      回复
    • Alan
      Alan
      06-14

      OK,微信号 qyd893533694 复现时间 2019/6/19 10:16-10:17  复现多次。日志已上传。

      复现方式,config里配置wss连接超时为1s,移动端接入弱网,延迟1000ms比如,稳定先回调onerror, connect timeout 。然后onopen, 接下来就是taskiD not exist.

      顺便问一句,小程序的wss怎么比较好的进行弱网测试~

      06-14
      回复
    • 良
      06-14回复Alan

      只看到了10:08,10:09 的请求,都是成功的,麻烦你复现一下之后等几分钟,之后再次上传一下日志

      06-14
      回复
    • 郝慧敏
      郝慧敏
      06-20

      我也遇到了同样问题,请问你最后怎么处理的

      06-20
      回复
    • Alan
      Alan
      06-20回复郝慧敏

      重新连接一个新的socket

      06-20
      回复
    查看更多(2)
  • Geefib
    Geefib
    05-22

    taskID not exist 是什么原因报错

    05-22
    赞同
    回复