页面在前台,建立的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了。
可以试试websocket框架【GoEasy】,自带心跳机制,断网自动重连消息补发,简单好用。
请看图,后台技术也是swoole做的长连接,前端这边监听到断线后重连,但是会出现刚连接上,又断开(socket连接断开API被触发了),然后又重连,又断开。试过前端做个心跳,向服务发送消息以保持在线,但不行。
如果我不想用心跳包,就等wx.onSocketClose方法被触发,然后去重新连接,重新注册,这样有什么问题没,前端按照这样,要是再出现刚重连上又断开,那多半就是服务有问题。
我也发现了这个问题,能否解决
心跳需要自己实现