我目前正尝试在CentOS 7上使用Coturn为WebRTC应用程序设置TURN服务器。由于我的组织使用严格的防火墙设置,因此我希望该应用程序能够通过TCP进行中继。我正在使用WebRTC Trickle ICE工具(https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/)测试ICE候选者的收集,但是我返回的唯一中继候选者是UDP中继候选者。
即使我在TURN服务器URL中指定“?transport = tcp”(例如turn: server-ip-address :3478?transport = tcp),情况也是这样。在查看Wireshark捕获之后,我注意到,即使我的WebRTC客户端通过TCP连接到TURN服务器,分配请求中的REQUESTED-TRANSPORT属性仍然是UDP。有谁知道为什么会这样?如何配置我的Coturn服务器以返回TCP中继候选者?
我目前在turnserver.conf文件中使用以下配置...
listening-port=3478
alt-listening-port=3479
lt-cred-mech
user=test:test
realm=test-realm
fingerprint
verbose
no-tls
no-dtls
log-file=/var/log/turn/turn.log
...以及我的WebRTC客户端中的以下对等连接配置。
peerConn = new RTCPeerConnection({
constraints: {
audio: true,
video: false
},
// Testing ICE candidate for coturn
iceServers: [{
urls: "turn:10.5.58.239:3478?transport=tcp",
username: "test",
credential: "test"
}],
iceTransportPolicy: "any"
});
这是我使用Trickle ICE工具返回的响应。
Time Component Type Foundation Protocol Address Port Priority
0.003 rtp host 547260449 udp 10.0.2.15 49165 126 | 30 | 255
0.349 rtp relay 3606296988 udp 10.5.58.239 56410 1 | 30 | 255
0.349 Done
0.355