连接问题 webRTC App。仅适用于本地,不适用于移动设备

connection issues webRTC App. works only local, not mobile

非常感谢在此问题上的一些帮助。不知道如何继续。

正在尝试制作一个 webRTC 应用程序。信令服务器是 Node.js 上的 WebSocket。出于某种原因无法与手机 phone 建立连接。使用 - 或 - 尝试使用 coturn。我不确定问题是客户端还是服务器端@coturn 中继服务器。

在我的例子中,调用者是调节器路由器后面的 pc,被调用者是移动的 phone,turn 和 websocket 是 public。

///CLIENTS BOTH CALLER and CALLEE
async function createPeerConnection() {
  log("Setting up a connection...");
  const iceConfig = {
    "iceServers": [{
      "urls": "stun:mycoturn.online:5349",
      "username": "guest",
      "credential": "password"
    }
    ,{
      "urls": "turn:mycoturn.online:5349",
      "username": "guest",
      "credential": "password"
    }]
  }

  myPeerConnection = new RTCPeerConnection(
  // {
  //   iceServers: [    
  //     {
  //       urls: "stun:stun1.l.google.com:19302",
  //       username: "",
  //       credential: ""
  //     }
  //   ]
  // }
   iceConfig
  );

  myPeerConnection.onicecandidate = handleICECandidateEvent;
  myPeerConnection.oniceconnectionstatechange = handleICEConnectionStateChangeEvent;
  myPeerConnection.onicegatheringstatechange = handleICEGatheringStateChangeEvent;
  myPeerConnection.onsignalingstatechange = handleSignalingStateChangeEvent;
  myPeerConnection.onnegotiationneeded = handleNegotiationNeededEvent;
  myPeerConnection.ontrack = handleTrackEvent;
}

[... Some code]

function handleICECandidateEvent(event) {
  // if (event.candidate) {
    log("*** Outgoing ICE candidate: ");
    sendToServer({
      type: "new-ice-candidate",
      target: targetId,
      candidate: event.candidate,
      id: clientID
    });
  // }
}

async function handleNewICECandidateMsg(msg) {
  var candidate = msg.candidate;

  log("*** Adding received ICE candidate: " + JSON.stringify(candidate));
  try {
    await myPeerConnection.addIceCandidate(candidate)
  } catch(err) {
    reportError(err);
  }
}

调用者和被调用者最后发送的候选者是 null(candidate:null),两者也都添加了 addIceCandidate(candidate)

被调用者获得候选事件后"candidate:null"被调用者获得"handleICEConnectionStateChangeEvent: failed" 最后我在控制台中收到此错误消息:

ICE failed, your TURN server appears to be broken, see about:webrtc for more details

这是我用 public google stun Server 以及我的 coturn stun/turn.

收到的最后也是唯一的错误信息

我应该提供哪些有意义的信息? 我应该在哪里搜索错误?真的不知道。

非常感谢 干杯

要事第一。

你必须检查你的回合服务器 (coTURN) 运行 好。

如需检查,请转至 Trickle ICE

  1. 移除默认的google眩晕服务器,并添加你的回合服务器信息。

  2. Select ICE 选项部分的继电器选项。

  3. 单击 'Gather candidates' 按钮。

如果你能得到具有 'rtp relay' 组件类型的候选人,那么轮到你的服务器 运行 很好。

因此,如果没有候选人,您必须修复轮次服务器。

如果没有,您必须修复您的信令服务器或客户端。