我已经建立了一个程序来使用Twilio可编程视频API进行视频聊天。我可以将本地和远程连接到会议室,并与所有参与者见面/聆听。
我正在存储Twilio的connect函数以redux状态返回的房间对象。我已经实现了用于切换摄像头和麦克风的按钮,并且它们可以正常工作-直到从组件上卸下容器为止。
[如果某人单击网站上的某些导航,使他们离开消息传递部分,则视频通话将卸载装有视频通话容器的组件,并在屏幕的右下方安装一个其他小的组件。进行此切换后,视频和音频继续正常工作(两个用户都可以看到和听到彼此),但是问题是切换麦克风和摄像头按钮不再正常工作。如果我单击禁用网络摄像头按钮,我会看到本地视频在本地关闭,但是远程参与者仍可以看到我的网络摄像头。如果我导航回到“消息传递”部分,则会再次看到较大的视频供稿,并且按钮仍然无法使用。
两个组件都从redux状态开始使用同一房间对象进行渲染。切换功能也会在redux状态下分派和减少。我可以确认,当我单击按钮时,reducer被调用了,只是轨道信息没有被传播。我尝试同时渲染它们,并且当我这样做时,大组件和小组件上的按钮都起作用,但是如果我离开消息传递部分(因此卸下大组件),则按钮会再次断裂-如果我关闭小部件,大部件上的按钮也会停止工作。
是否缺少某些固有的东西,如果将其从组件中删除,会导致轨道的disable()/enable()
功能停止工作?没有发现任何错误,只是在联系远程参与者有关音轨更改时似乎断开了连接。
useEffect
声明中,它正在返回调用removeAllListeners()
。删除该问题。