多Socket.IO实例冲突与跨命名空间函数调用失败问题解决
跨Socket.IO实例函数调用失败的解决方案
问题场景
- 需同时实现两项Socket.IO相关业务:用RTCMultiConnection处理广播流,用browserlivestream向Facebook/Youtube推流
- 最初通过
loadScript加载两个Socket.IO文件,分别挂载到socketIO1和socketIO2命名空间隔离实例 - 在
socketIO1的connection.onstream回调内调用socketIO2中定义的requestMedia函数时,触发函数未定义错误
排查结论
问题根源在于版本不兼容:browserlivestream依赖的Socket.IO版本为1.7.4,而RTCMultiConnection使用的是4.4.1版本,不同版本的Socket.IO实例存在作用域隔离与兼容性冲突,导致跨实例的函数无法被正确识别。
解决方案
- 升级browserlivestream所依赖的Socket.IO版本,使其与RTCMultiConnection的
4.4.1版本保持兼容 - 版本统一后,无需再维护两个独立的Socket.IO实例,可共用同一个Socket.IO实例完成广播流处理和第三方平台推流的双重需求,同时彻底解决跨实例函数调用失败的问题
内容的提问来源于stack exchange,提问作者cloudrider
相关产品推荐
相关产品推荐

