假设我在Wifi上建立了PeerConnection
。如何在不中断会话的情况下优雅地将网络切换到移动设备?
我显然可以阻止所有事情并重新协商会议,但我不认为这是解决方案。
还有iceConnectionReceivingTimeout
和iceBackupCandidatePairPingInterval
个参数似乎是针对这种情况设计的,但不幸的是,我找不到除this post之外如何使用它们的任何提示。显然只是设置它们没有做任何事情。
答案 0 :(得分:2)
如前所述,您不能。但是,如果您使用的是铬最新的WebRTC,则有一种方法可以最大程度地减少延迟。
最快的可用选项是捕获网络更改事件并通过使用offer
标志在同一RTCPeerConnection
中重新创建iceRestart: true
并将其发送给参与者来重新启动连接。
https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions
这将通过为ICE用户名和密码片段生成并使用新值-ufrag
/ pwd
自动触发重新协商。
注意
当iceConnectionState时,建议执行ICE重新启动 转换为“失败”。应用程序可以另外选择 侦听iceConnectionState过渡到“已断开连接”并 然后使用其他信息源(例如使用getStats 测量下一对发送或接收的字节数 的秒数增加)以确定ICE是否重启 明智的。
答案 1 :(得分:0)
简单的答案是,你做不到。当前连接将立即开始下降......
信令阶段协商一对可从两端互相访问的ip和端口。当您将wifi更改为移动网络时,这必然会发生变化,因为您的IP将会发生变化,防火墙,路由等也会发生变化。您需要再次完成整个过程。