android – 如何重启?

我正在使用android libjingle开发一个基于webRTC的语音聊天应用程序.我希望通过使用ice重新连接用户,当他们将网络从wifi更改为4g或反之,或者断开连接时.我有一个关于使用libjingle实现它的问题.我将根据我的理解写下如何实现冰重启功能,让我知道有什么不对.

问:根据我的理解,首先我需要在MediaConstraints选项中将ice start选项设置为true,而不删除用于第一个连接的对等连接like,如下所示:

mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("IceRestart", "true"));

其次,我需要使用对等连接객체(用于第一个连接)的updateIce方法更新MediaConstrants,如下所示:

peerConnection.updateIce(iceServers, mediaConstraints);

最后发送报价是否正确,这与基本的webrtc网络是一样的?

>我想仔细检查一下我是否理解得很好.如果我写的有什么问题,请告诉我!

解决方法:

为了重新启动冰,发送方应该发送带有不同ice-pwd或ice-ufrag的SDP文件.
IceRestart选项强制PeerConnection更新这些值.

步骤应该是:

>加上额外的约束:

cons.mandatory.add(new MediaConstraints.KeyValuePair(“IceRestart”,“true”));

>生成sdp文件:

pc.createOffer(new WebRtcObserver(callbacks),cons);

>将结果sdp设置为PeerConnection:

pc.setLocalDescription(new WebRtcObserver(callbacks),sdp);
 
>将其发送给远程同伴.

因此,步骤2-4与常规报价相同.

上一篇:python – Redis定期断开并重新连接Twisted


下一篇:java – 通过断开连接的套接字写入不会抛出