微信小程序中使用即时通讯,按照文档一切都是可以正常使用的。现在遇到一种场景:手机没网络了,然后销毁小程序,重新进入小程序(此时是断网状态)。然后又有网了,这时候的即时通讯就不会自动重连了。只能把小程序销毁,再重新进入小程序(此时有网状态)才行。请问这种场景怎么破???
@sdjdd
你好,可以在小程序中通过 wx.onNetworkStatusChange 监听网络变化,在网络恢复后使用 Realtime#retry 手动重连。
你好。我尝试着用你说的方法,有了新的报错:Error: retrying not allowed when not disconnected. the connection is now error
我发现,以我说的那种场景进入的小程序。所有的事件监听都是不起作用的。重连操作也不行。
retry 对调用的时机要求比较严格。或许这里用 resume 更加合适。
如果小程序的官方 API 都不能及时触发事件的话,也就没有更好的监听手段了。可以暴力的在每次 App.onShow 时都调用一下 resume 。
不好意思我可能没有表达清楚。我说的是realtime的event事件,监听不到了。resume也用了,不起作用。
Realtime 感知到网络连接变化通常会慢于小程序的 API ,所以建议使用后者。
我用的就是小程序的监听网络变化的API,也用了resume,retry方法,都是不起作用的。我也同时监听了realtime所有的event的事件。我发现,以我所说的这种场景进入小程序,realtime的一切event都是没有的。
我在以我所说的这种场景状态(无网络进入小程序,初始化realtime,不关闭小程序,打开网络)下进行createIMClient,走的都是错误的回调,报错Error: request:fail。
我咨询了下大佬。retry 和 resume 在 client 创建失败后是不能使用的。这种情况请先确定网络连接已恢复,然后重新创建 client 。
但目前的 SDK (5.0.0-rc.6) 无法在创建 Client 失败后重新创建。这个问题修复后我会在这里回复。
好的,谢谢
断线重连的问题已经在 v5.0.0-rc.7 中修复