LTE到WIFI连接不适用于WebRTC连接,但Wifi到Wifi可以

时间:2018-03-09 09:29:25

标签: javascript ios reactjs react-native webrtc

我正在编写一个视频聊天应用程序,我正在使用谷歌的公共STUN服务器并向xirsys的端点请求远程TURN服务器。当我查看日志时,我注意到正在使用LTE连接向设备发送bag tcp数据包,并且使用WiFi连接与设备一起发送udp数据包。起初,我认为问题是我只使用STUN服务器而不是TURN和STUN服务器。但是,我仍然得到“data.sdp未定义”和/或icestateconnection陷入“检查”状态。有人请不仅要检查和分析代码及其谬误,还要解释为什么会发生这种情况并提供您知道的任何资源,以帮助我理解该问题。谢谢!

[代码]

//fetch for ice servers
if (servers) {
  console.log(`servers: ${JSON.stringify(servers.v.iceServers, null, 2)}`);
  iceServers = [
    ...servers.v.iceServers,
    {"url": "stun:stun.l.google.com:19302"},
    {"url":'stun:stun1.l.google.com:19302'},
    {"url":'stun:stun2.l.google.com:19302'},
    {"url":'stun:stun3.l.google.com:19302'},
    {"url":'stun:stun4.l.google.com:19302'},
  ];
  return;
}

//configuration
pc = new RTCPeerConnection({"iceServers": iceServers};);

//exchange to signaling server
exchange(data) {
const fromId = data.from;

if (!pc)
  this.createPC(fromId, false);

console.log(`Data: ${JSON.stringify(data, null, 2)}`);
console.log(`Data.sdp ${data.sdp}`);
if (data.sdp) {
  console.log('exchange sdp', data.sdp);
  pc.setRemoteDescription(new RTCSessionDescription(data.sdp), function () {
    if (pc.remoteDescription.type === "offer")
      pc.createAnswer(function(desc) {
        console.log('createAnswer', desc);
        pc.setLocalDescription(desc, function () {
          console.log('setLocalDescription', pc.localDescription);
          socket.emit('exchange', {'to': fromId, 'sdp': pc.localDescription });
        }, logError);
      }, logError);
  }, logError);
} else {
  console.log('exchange candidate', data);
  pc.addIceCandidate(new RTCIceCandidate(data.candidate));
}

}

1 个答案:

答案 0 :(得分:0)

事实证明,在网络请求之后设置服务器之前,我已经为ICE服务器启动了配置!问题解决了!