我目前正在尝试在 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