连接问题 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。
移除默认的google眩晕服务器,并添加你的回合服务器信息。
Select ICE 选项部分的继电器选项。
- 单击 'Gather candidates' 按钮。
如果你能得到具有 'rtp relay' 组件类型的候选人,那么轮到你的服务器 运行 很好。
因此,如果没有候选人,您必须修复轮次服务器。
如果没有,您必须修复您的信令服务器或客户端。
非常感谢在此问题上的一些帮助。不知道如何继续。
正在尝试制作一个 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。
移除默认的google眩晕服务器,并添加你的回合服务器信息。
Select ICE 选项部分的继电器选项。
- 单击 'Gather candidates' 按钮。
如果你能得到具有 'rtp relay' 组件类型的候选人,那么轮到你的服务器 运行 很好。
因此,如果没有候选人,您必须修复轮次服务器。
如果没有,您必须修复您的信令服务器或客户端。