0

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

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

在我的情况下,呼叫者是调节器路由器后面的电脑,被呼叫者是手机,turn 和 websocket 是公共的。

///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:失败”最后我在控制台中收到此错误消息:

ICE 失败,您的 TURN 服务器似乎已损坏,有关详细信息,请参阅 about:webrtc

这是我通过公共 google stun 服务器以及我的 coturn stun/turn 收到的最后一个也是唯一的错误消息。

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

非常感谢提前干杯

4

1 回答 1

0

第一件事。

你必须检查你的轮到服务器(coTURN)运行良好。

如需检查,请前往Trickle ICE

  1. 删除默认的 google stun 服务器,并添加您的转向服务器信息。

  2. 在 ICE 选项部分选择继电器选项。

  3. 点击“收集候选人”按钮。

如果您能找到具有“rtp 中继”组件类型的候选人,那么您的转向服务器运行良好。

因此,如果没有候选人,您必须修复您的回合服务器。

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

于 2020-05-12T18:52:23.267 回答