如何在WebRTC中的网络之间进行优雅切换?

时间:2016-12-12 10:24:50

标签: android ios webrtc

假设我在Wifi上建立了PeerConnection。如何在不中断会话的情况下优雅地将网络切换到移动设备?

我显然可以阻止所有事情并重新协商会议,但我不认为这是解决方案。

还有iceConnectionReceivingTimeouticeBackupCandidatePairPingInterval个参数似乎是针对这种情况设计的,但不幸的是,我找不到除this post之外如何使用它们的任何提示。显然只是设置它们没有做任何事情。

2 个答案:

答案 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将会发生变化,防火墙,路由等也会发生变化。您需要再次完成整个过程。