问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 微信小程序 Bug connectSocket 客户端 6.7.2 2.3.0
我这里是写了一个只要断线就会自动重连的脚本……
当我切换到后台之后,websocket可能会断线,断线之后产生close事件就会在后台自己重连。理论上是这样
但是现在:
在开发者工具的真机调试模式下面,websocket既不会连接成功也不会报错,一直就卡死在connecting状态上
在预览和自动预览下面,后台重连会报错,提示jsapi has no permission
而在开发者工具里直接点切后台,压根就没有发生过断线情况……
https://developers.weixin.qq.com/community/develop/doc/000e2c5859cc70a5883741bac56800
这个链接里的仁兄提出的方案是onhide和onshow分别做一次处理,确实是免除一切后患的方案,但是这样我又得加一个状态判断而且多少可能会漏掉一些信息……
想请问一下各位大神有没有什么………………比较合适的办法?还是说这其实是个bug?线上实际环境应该以哪个为准?
代码片段
wechatide://minicode/7sITQ0mp7h3y
微信小程序开发问题解答
微信小程序开发者回答:
微信小程序已进入后台,好像就是跟断了网一样,所以,只要一进入后台,websocket就会断,所以最好还是在生命周期函数里,分别进行一次处理,,,或者自己写一个回调,在后台一直连接,不过我感觉还是在生命周期里写比较好,不然微信小程序会一直占用很多资源。
微信小程序开发者回答:
现在其实就是在后台的时候不知道回调哪个……尤其是现在在真机调试这功能里面websocket会保持在connecting但是一直不open,那么下一步的排错什么也别想执行了……怎么说呢……这种差异理当是不符合预期的吧。
写在onshow和onhide确实可以,但是这已经不是重点了……
我主要就想知道在实际环境里到底应该对应哪个情况……真机还是预览还是开发者工具直接看……
微信小程序开发者回答:
绝对的真机,而且最少的测试安卓和ios,更好的话,测试更多具体机型,微信小程序可能存在在某种机型上的不适配,或者bug。
微信小程序开发者回答:
你可以在监听关闭的事件里,写一个timeout函数,去调这个websocket的open事件,如果不成功就隔两秒调用一次。这样的话,就会一直在后台进行重连。
微信小程序开发者回答:
=_=……真是喜闻……行多谢兄台…………
微信小程序开发者回答:
真机会有这个问题,目前是在onhide里面断开,然后onshow里面重新连接
微信小程序开发者回答:
socket连接状态不止在一个页面使用,一个页面hide的时候断开,其他地方的消息接收不到了,也是不行的
本文网址:http://www.91bianli.com/kaifazhinan/74802.html