我使用coturn
作为TURN
服务器,以便在WebRTC
连接中进行中继。我想要实现的是基于TCP
的连接,而不是基于UDP的连接。
我尝试过的:在coturn配置中,我已将no-udp
和no-udp-relay
设置为仅强制基于TCP
的连接。
# Uncomment if no UDP client listener is desired.
# By default UDP client listener is always started.
#
no-udp
# Uncomment if no UDP relay endpoints are allowed.
# By default UDP relay endpoints are enabled (like in RFC 5766).
#
no-udp-relay
每当我尝试建立连接时,我都会得到turn server may be broken
。
可能有用的细节,A和B正在尝试与通信
- 在机器
A
上,我得到3个UDP候选和3个TCP候选 - 在机器
B
上,我只得到3个UDP候选 - 两者都在使用Firefox当我阅读firefox文档时,我发现
TCP
ice候选者类型没有任何relay
或TURN
连接。这会是失败的原因吗
问题是,失败的原因是什么?
编辑:这是Chromium页面的最新一期https://bugs.chromium.org/p/chromium/issues/detail?id=1201700#c5
即使存在TURN扩展以获得TCP分配,WebRTC也不支持TURN TCP中继,只支持UDP。但是,它支持使用TCP或TLS连接TURN服务器。
这是因为TURN服务器被假定在具有工作UDP连接的不受限制的网络上。由于TCP对实时流量的属性不好,因此它应该只是最后的后备方案,并且在两个对等端都缺乏UDP连接的极端情况下,它们可以使用TCP连接到TURN服务器,TURN服务器之间的流量仍然是UDP。