收藏
回答

小程序 websocket 关闭失败

👉 js ( 项目里的不行,我提出来了个简单的小 demo )

open () {
 
   this.socketTask = wx.connectSocket({
 
     url: `ws://xxx.xxx.xxx:xxxxx`,
 
     success: res => {
 
       console.log('----- socket create -----')
 
     }
 
   })
 
   this.socketTask.onOpen(onOpen => {
 
     // this._socketOpen = true
 
     console.log('----- socket 连接打开 -----')
 
   })
 
   this.socketTask.onClose(res => {
 
     console.log('res--------------------> ', res)
 
   })
 
 },
 
 close () {
 
   this.socketTask.close()
 
 }


👉 wxml

<button bindtap="open">打开</button>    
 
<button bindtap="close">关闭</button>


👉 打印信息



👉!!!正常的关闭应该是 code 为 1000,但是我就是正常关闭,监控却是 1006 非正常关闭,求指导~~


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

2 个回答

  • 小程序技术专员-june
    小程序技术专员-june
    01-03

    看起来像是缺少心跳包的实现?

    01-03
    赞同
    回复 11
    • 🌻
      🌻
      01-03

      你好,我是用 onclose 监听 websocket 是否正常关闭,如果是我主动触发正常关闭 code: 1000 的话,就不去重新建立 socket,如果不是正常关闭的话,我会重新连接。我是这个思路,没有用心跳检测。所以我遇到的问题是,我主动正常关闭却关闭不成功,就有问题了......,不知是不是我代码什么的写错了...还是怎么的.....[忧桑]

      01-03
      回复
    • 小程序技术专员-june
      小程序技术专员-june
      01-03回复🌻

      你给 this.socketTask.close 接口传一下 code 和 reason 试试?


      01-03
      回复
    • 🌻
      🌻
      01-03回复小程序技术专员-june
      this.socketTask.close({
            code: 1000,
            reason: 'Normal shutdown~~'
      })


      没什么用......还是报


      {code: 1006, reason: "abnormal closure"}


      01-03
      回复
    • 小程序技术专员-june
      小程序技术专员-june
      01-04回复🌻

      我用你的代码片段,加了这个后就正常了。你是 open 之后再进行关闭的么?

      01-04
      回复
    • 🌻
      🌻
      01-04回复小程序技术专员-june

      是的,先用 connectSocket 建立连接,然后 onOpen 回调函数监控正常打开...... 然后不行......

      这个是我的代码和 log 信息...... 😳😳😳






      01-04
      回复
    查看更多(6)
  • 社区技术运营专员-娇华
    社区技术运营专员-娇华
    2018-12-26

    麻烦提供一下出现问题的机型和微信版本,并且给个相关的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)

    2018-12-26
    赞同
    回复 4
    • 🌻
      🌻
      2018-12-27

      版本信息:

      1. 手机: ios 12.1.2

      2. 手机微信:7.0.0

      3. web 开发工具:v1.02.1811290


      注:

          1. web 开发工具 onClose 的 {code : 1006}

          2. 手机打印的 onClose 的 {code : 1001}

         3. 都不是 1000 正常关闭


      代码片段:

          1. https://developers.weixin.qq.com/s/Oh6m7YmY7t4B


      2018-12-27
      回复
    • 🌻
      🌻
      01-03

      你好,请问知道是什么问题了么

      01-03
      回复
    • 社区技术运营专员-娇华
      社区技术运营专员-娇华
      01-03回复🌻

      稍等,我再重新确认下这个问题

      01-03
      回复
    • 🌻
      🌻
      01-03回复社区技术运营专员-娇华

      好的,谢谢,辛苦

      01-03
      回复