小程序的websocket 自动断开问题
发布于 5 年前 作者 ming40 1168 次浏览 来自 问答

页面在前台,建立的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了。

3 回复

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

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

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

心跳需要自己实现

回到顶部