我有一个WebRTC多方应用程序,可以在localhost和ngrok.io localhost隧道上工作。但是,当我尝试与通过路由器连接的我的朋友进行测试时,我可以看到要约/答案交换以及ICE候选交换,但是没有声音通过。
在首先遇到这个问题之后,我进行了一些研究,了解到您需要TURN服务器才能通过路由器的NAT。我正在使用已确认在https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
中有效的公共TURN服务器var configuration = {
"iceServers": [{ "url": "stun:stun2.1.google.com:19302" }],
url: 'turn:192.158.29.39:3478?transport=udp',
credential: 'JZEOEt2V3Qb0y27GRntt2u2PAYA=',
username: '28224511:1379330808'
};
yourConn = new webkitRTCPeerConnection(configuration);
yourConn2 = new webkitRTCPeerConnection(configuration);
yourConn3 = new webkitRTCPeerConnection(configuration);
声音数据包应该通过此TURN服务器和我朋友的NAT进行路由,但我们仍然无法彼此流式传输。
答案 0 :(得分:1)
您的转弯服务器凭证来自https://www.html5rocks.com/en/tutorials/webrtc/infrastructure/,并且已在2013年过期。如果您使用https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/,它应该告诉您这不起作用-如果它给出了,我会感到很惊讶您可以中继候选人。
运行您自己的服务器。
答案 1 :(得分:0)
您应该更改配置:
var configuration = {
"iceServers": [
{ "url": "stun:stun2.1.google.com:19302" },
{
"url": "turn:192.158.29.39:3478?transport=udp",
"credential": "yourpassword",
"username": "yourusename"
}
],
};