收藏
回答

wx.closeSocket()之后如何重新打开wss

问题模块 框架类型 问题类型 终端类型 微信版本 基础库版本
框架 小程序 Bug 客户端 6.5.3 2.0.0

调用  wx.closeSocket() 关闭wss链接 之后,如何重新打开链接, 使用  wx.connectSocket 打开第二次没问题, 打开第三次的时候报错

“ VM3292:1 同时最多发起 2 个 socket 请求,更多请参考文档”


请教如何释放打开的资源,链接断开后如何重连

最后一次编辑于  2018-10-09  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

1 个回答

  • Nancy老师今天很美
    Nancy老师今天很美
    2018-10-10

    每次连接之前,都要确保socket已经关闭

    2018-10-10
    赞同
    回复 6
    • 大CC
      大CC
      2018-10-10

      关闭是调用close 那个函数吗? 不管用啊, 我调用了close ,再次调connect时候, 会提示只能创建两个链接

      2018-10-10
      回复
    • Nancy老师今天很美
      Nancy老师今天很美
      2018-10-10回复大CC
      var SocketTask;

      SocketTask = wx.connectSocket({
            url: websocket

          });


      如上这样建立连接


      然后如下关闭连接

      SocketTask.close();


      然后需要开启长连接的时候再执行:

      SocketTask = wx.connectSocket({
            url: websocket
          });


      我是这样用的socket,希望对你有所帮助

      2018-10-10
      回复
    • 大CC
      大CC
      2018-10-10

      感谢回复


      不过我先就是这样写,


      先用 .close();

      然后再次调用  wx.connectSocket

      第一次没问题

      重复两次就不行了, 提示 ws最多只能建立两个

      是不是 api有bug

      2018-10-10
      回复
    • Nancy老师今天很美
      Nancy老师今天很美
      2018-10-10回复大CC

      官方的那个长连示例里面指出了:

      推荐开发者尽量使用 socketTask 的方式去管理 webSocket 链接,每一条链路的生命周期都更加可控。同时存在多个 webSocket 的链接的情况下使用 wx 前缀的方法可能会带来一些和预期不一致的情况。当存在多条连接时,wx.onSocketOpen、wx.sendSocketMessage、wx.onSocketMessage 等接口会只作用于第一条连接的长连。且wx.onSocketOpen 接口不能多次注册 webSocket 长连的回调函数,仅最后一次生效。使用 socketTask 任务的方式则不会出现上述问题。

      2018-10-10
      回复
    • Nancy老师今天很美
      Nancy老师今天很美
      2018-10-10回复大CC

      按官方的说法,你说的这个应该就是api设计时的不足

      2018-10-10
      回复
    查看更多(1)