fix(webrtc): 修复主动关闭旧连接时误报断开通知,并更新 ICE 服务器列表
- 在 createPeerConnectionAndAnswer 中关闭旧连接前设置 suppressDisconnectNotify 标志,抑制 notifyRemoteDisconnected 回调,避免接受新连接时误报远程断开。 - 调整被控端、控制端、Web 控制台及 Flutter 控制端的 ICE 服务器配置,启用了内网 STUN/TURN 服务器并注释掉旧的公网 TURN 服务器。
This commit is contained in:
@@ -78,6 +78,9 @@ public class WebRtcClient {
|
||||
|
||||
private RemoteDisconnectCallback remoteDisconnectCallback;
|
||||
private boolean remoteDisconnectNotified = false;
|
||||
// 主动关闭/重建连接(如接受新连接时关闭旧连接)期间,抑制因旧 PeerConnection/
|
||||
// DataChannel 关闭而误触发的"远程控制端断开"通知。
|
||||
private boolean suppressDisconnectNotify = false;
|
||||
|
||||
public interface IceEventListener {
|
||||
void onIceConnected();
|
||||
@@ -120,6 +123,8 @@ public class WebRtcClient {
|
||||
|
||||
private void notifyRemoteDisconnected() {
|
||||
if (remoteDisconnectNotified) return;
|
||||
// 主动重建连接期间(关闭旧连接)不向上层报告断开,避免误报。
|
||||
if (suppressDisconnectNotify) return;
|
||||
remoteDisconnectNotified = true;
|
||||
if (remoteDisconnectCallback != null) {
|
||||
remoteDisconnectCallback.onRemoteDisconnected(currentControllerId);
|
||||
@@ -272,8 +277,11 @@ public class WebRtcClient {
|
||||
|
||||
public void createPeerConnectionAndAnswer(String offerSdp, String controllerId) {
|
||||
if (peerConnection != null) {
|
||||
// 主动关闭旧连接(用户接受新连接)期间,抑制旧连接关闭带来的误报断开回调。
|
||||
Log.d(TAG, "Closing previous peer connection");
|
||||
suppressDisconnectNotify = true;
|
||||
closeCurrentConnection();
|
||||
suppressDisconnectNotify = false;
|
||||
}
|
||||
this.currentControllerId = controllerId;
|
||||
this.remoteDisconnectNotified = false;
|
||||
@@ -283,12 +291,12 @@ public class WebRtcClient {
|
||||
List<PeerConnection.IceServer> iceServers = new ArrayList<>();
|
||||
// 建议:如果你有 TURN 服务器,请务必在此处添加,例如:
|
||||
// iceServers.add(PeerConnection.IceServer.builder("turn:your_turn_server").setUsername("user").setPassword("pass").createIceServer());
|
||||
iceServers.add(PeerConnection.IceServer.builder("turn:175.178.213.60:3478").setUsername("fanhuitong").setPassword("Fan19961207..").createIceServer());
|
||||
iceServers.add(PeerConnection.IceServer.builder("stun:175.178.213.60:3478").createIceServer());
|
||||
// iceServers.add(PeerConnection.IceServer.builder("turn:175.178.213.60:3478").setUsername("fanhuitong").setPassword("Fan19961207..").createIceServer());
|
||||
// iceServers.add(PeerConnection.IceServer.builder("stun:175.178.213.60:3478").createIceServer());
|
||||
iceServers.add(PeerConnection.IceServer.builder("turn:47.242.112.133:3478").setUsername("ttstd").setPassword("fanhuitong").createIceServer());
|
||||
iceServers.add(PeerConnection.IceServer.builder("stun:47.242.112.133:3478").createIceServer());
|
||||
// iceServers.add(PeerConnection.IceServer.builder("turn:192.168.5.224:3478").setUsername("tt").setPassword("fht").createIceServer());
|
||||
// iceServers.add(PeerConnection.IceServer.builder("stun:192.168.5.224:3478").createIceServer());
|
||||
iceServers.add(PeerConnection.IceServer.builder("turn:192.168.5.224:3478").setUsername("tt").setPassword("fht").createIceServer());
|
||||
iceServers.add(PeerConnection.IceServer.builder("stun:192.168.5.224:3478").createIceServer());
|
||||
iceServers.add(PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer());
|
||||
iceServers.add(PeerConnection.IceServer.builder("stun:stun1.l.google.com:19302").createIceServer());
|
||||
iceServers.add(PeerConnection.IceServer.builder("stun:stun2.l.google.com:19302").createIceServer());
|
||||
|
||||
Reference in New Issue
Block a user