非常感谢在这个问题上的一些帮助。不知道如何继续。
试图制作一个 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 收到的最后一个也是唯一的错误消息。
我应该提供哪些有意义的信息?我应该在哪里搜索错误?真的不知道。
非常感谢提前干杯