收藏
回答

小程序 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 非正常关闭,求指导~~


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

3 个回答

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

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

    2019-01-03
    有用
    回复 12
    • 吃了个大香瓜
      吃了个大香瓜
      2019-01-03

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

      2019-01-03
      回复
    • 小程序技术专员-june
      小程序技术专员-june
      2019-01-03回复吃了个大香瓜

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


      2019-01-03
      回复
    • 吃了个大香瓜
      吃了个大香瓜
      2019-01-03回复小程序技术专员-june
      this.socketTask.close({
            code: 1000,
            reason: 'Normal shutdown~~'
      })


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


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


      2019-01-03
      回复
    • 小程序技术专员-june
      小程序技术专员-june
      2019-01-04回复吃了个大香瓜

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

      2019-01-04
      回复
    • 吃了个大香瓜
      吃了个大香瓜
      2019-01-04回复小程序技术专员-june

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

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






      2019-01-04
      回复
    查看更多(7)
  • 禾店短剧系统
    禾店短剧系统
    2021-05-27

    后续呢?

    2021-05-27
    有用 1
    回复 2
    • 吃了个大香瓜
      吃了个大香瓜
      2021-06-09
      最后是后台同学改了实现方式,就能关闭成功了
      2021-06-09
      回复
    • 吃了个大香瓜
      吃了个大香瓜
      2021-06-09
      换了一个框架,一开始使用的第三方开源的系统,我觉得挺好用的,但是没有解决socet一直失败的问题,后来就换了SprintBoot自带的Socket组件就可以了(后台童鞋原话)
      2021-06-09
      回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2018-12-26

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

    2018-12-26
    有用
    回复 4
登录 后发表内容