## 问题
小程序开发,创建websocket连接来通信,通信完成便释放掉。再通信再打开。当通信到第22次/34次时,websocket的onOpen将不再触发。
测试用的微信版本为7.0.3和7.0.4,基础库版本为2.6.6。
经测试,该问题有以下特点:
1. 若出现该问题,则100%一定复现。例如A手机在第22次出现了该问题,则下次运行小程序,必然还是22次出问题。且出问题后,本次运行小程序的websocket再也无法恢复正常。
2. 清除小程序的后台进程,再次打开小程序,依然可以正常websocket通信22次。之后问题再次出现。
3. 有的是卡在第22次,有的是卡在第34次。这是在真机调试,没有打开开发者工具调试界面情况下。若使用开发者工具,开着开发者工具的调试界面,则是卡在第20/32次。
4. 与Android系统无关。目前测试出问题的手机Android系统有:Android 5.0,Android 6.0,Android 7.1.2,Android 8.1.0。
5. 与手机无关。写一个网页,使用js的websocket实现同样的逻辑。用小程序出问题的手机的浏览器打开,经测试无连接次数限制。
6. 与手机厂家无关。目前试过小米,魅族,原生谷歌系统,都出现过。
7. 与手机型号无关。有一台出问题的手机为小米Note3,测试另一台同一批次参数完全相同的小米Note3,两台都为同一版本的MIUI与Android,将两台手机的各个设置全部调为一样,一台依然是正常的,不出现该问题;另一台则100%会在第34次通信出现该问题。
8. 试过调整微信的权限,无效;试过清空微信的数据和缓存,无效;重装微信,绝大多数可以解决。有一台是谷歌原生系统7.1.2,重装也无法解决。
9. 小程序与插件都存在该问题。
## 测试方法
定义一个变量count用于记录websocket成功连接的次数。
调用wx.connectSocket创建socketTask并暂存,在socketTask.onOpen中关闭该socketTask并令count++,在socketTask.onClose中调用wx.connectSocket来创建一个新的socketTask。重复上述步骤。
于是,只要websocket成功创建并触发onOpen,count就会+1。当该websocket成功关闭后,再重复该流程。一旦websocket没有触发onOpen,流程就会卡住。由此,当websocket卡住的时候,就可以知道已经成功建立了多少次websocket连接。
在此过程中是先关闭上次websocket完成后再开始创建下一个websocket,自始至终同一时间只有一个websocket,因此不存在超出5个websocket的问题。另外是在onOpen与onClose中执行的关闭与创建操作,所以也不存在时序问题。
麻烦在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点并提供下代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
日志已上传,微信号:prophet_yj
代码片段:https://developers.weixin.qq.com/s/dtou5Tme7b7s
从表现看很像是我们在 7.0.4 已经修复了的一个问题。请确认下是在 7.0.4 重现的,如果是。上传日志后,提供具体出现问题的时间点和微信号。
排查了一下,出现问题的4个手机,版本应该都是7.0.3。其中有3台是重装微信解决的。还有一台出问题的手机是小米8,刚才跟机主交流了一下,当时出问题的时候微信是7.0.3版本,现在他已经升级到了7.0.4,再测试,这个问题也没有再出现。然而升级版本是否意味着重装?还是热更新?
4月25日出问题的那台设备,重装了一个7.0.3版本,也解决了。上面给出的代码片段就是当时测试用的。重装前也是7.0.3,一直出问题,也上传了日志,微信号:prophet_yj,时间是4月25日15:43之前的几分钟内。
我们这边设备有限,暂时没再遇到出这个问题的手机了。我们会继续测试观察。
感谢官方大大的回复。
PS:哪里能看到这个7.0.4的详细更新日志?所能查到的7.0.4官方更新说明都只有一行:发「视频动态」时,可以搜一首歌设为背景音乐。
我也是同样问题,在开发者工具那里onopen勾子能行,但是安卓系统真机上就不行,断线重连的时候不触犯onopen勾子
遇到同样的问题,有找到原因么