收藏
回答

小程序的websocket 自动断开问题

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug 网络 客户端 6.6.7 2.1.1

页面在前台,建立的websocket,在大约1分钟左右就自动关闭了,返回code是1006。

查了一下rfc6455,返回1006表示异常关闭(Abnormal Closure)。


现在有个疑问:

小程序在建立连接后会定时发送包含ping帧吗?如果有,这个时间间隔可以调整吗?我看rfc6455的control frames中opcode段有定义ping/pong数据。


php的swoole库里是有自动回复pong的。当Client发送含ping的frame,会自动回执一个含pong的frame。


如果小程序没有,那就只能在application level去做ping/pong了。

回答关注问题邀请回答
收藏

4 个回答

  • Olá.
    Olá.
    2021-07-08

    可以试试websocket框架【GoEasy】,自带心跳机制,断网自动重连消息补发,简单好用。

    2021-07-08
    有用
    回复
  • z_oct.2
    z_oct.2
    2019-01-11


    请看图,后台技术也是swoole做的长连接,前端这边监听到断线后重连,但是会出现刚连接上,又断开(socket连接断开API被触发了),然后又重连,又断开。试过前端做个心跳,向服务发送消息以保持在线,但不行。

    如果我不想用心跳包,就等wx.onSocketClose方法被触发,然后去重新连接,重新注册,这样有什么问题没,前端按照这样,要是再出现刚重连上又断开,那多半就是服务有问题。

    2019-01-11
    有用
    回复 3
    • 余温
      余温
      2020-05-14
      楼主是怎么接解决的
      2020-05-14
      回复
    • z_oct.2
      z_oct.2
      2020-05-14回复余温
      后台自己加心跳,小程序前端没做心跳处理。刚连接上websocket会断开问题,现在正常。
      2020-05-14
      回复
    • zhang
      zhang
      2020-10-07回复z_oct.2
      心跳包做了,安卓正常不断开,但是苹果熄屏20秒左右(服务端确认这中间还有心跳包通讯),还是会被强制断开。
      2020-10-07
      回复
  • Jerry
    Jerry
    2018-08-31

    我也发现了这个问题,能否解决

    2018-08-31
    有用
    回复
  • 另一蜘猪
    另一蜘猪
    2018-07-02

    心跳需要自己实现

    2018-07-02
    有用
    回复
登录 后发表内容