最近对接腾讯TRTC时,监听onUserVideoAvailable事件回调一直反复输出0、1。如下:
demo.js:298 trtc_demo: onUserVideoAvailable uid:38939|available:1
demo.js:298 trtc_demo: onUserVideoAvailable uid:38939|available:0
demo.js:298 trtc_demo: onUserVideoAvailable uid:38939|available:1
demo.js:298 trtc_demo: onUserVideoAvailable uid:38939|available:0
demo.js:298 trtc_demo: onUserVideoAvailable uid:38939|available:1
demo.js:298 trtc_demo: onUserVideoAvailable uid:38939|available:0
demo.js:298 trtc_demo: onUserVideoAvailable uid:38939|available:1
demo.js:298 trtc_demo: onUserVideoAvailable uid:38939|available:0
demo.js:298 trtc_demo: onUserVideoAvailable uid:38939|available:1
demo.js:298 trtc_demo: onUserVideoAvailable uid:38939|available:0
demo.js:298 trtc_demo: onUserVideoAvailable uid:38939|available:1
出现这种情况,很有可能是调用了两次enterRoom方法。第二个连接将第一个连接踢掉,但是由于第一个连接有一个心跳机制,会尝试重连,当重连成功后,会将第二个连接踢掉。第二个连接也有一个心跳机制,如此反复。。。就出现了同一个用户断断续续连接的问题。
实际场景如下:
- 两个用户(任意两端)使用同一个账号进入同一个房间。
- electron多窗口场景下,2个窗口都调用了enterRoom方法。
2个窗口即便是使用了
getTRTCShareInstance获取实例,也是不可以的。该接口官方文档解释:用于动态加载 dll 时,创建 ITRTCCloud 对象单例。两个窗口分别加载了一次dll。则会创建出两个实例。