将 TURN|STUN 与 XMPP 集成

将 TURN|STUN 与 XMPP 集成

XMPP 客户端如何找到 TURN 或 STUN 服务器?XEP-0215不受任何服务器或客户端支持,但是XEP-0176建议使用 XEP-0215?

我同时运行 XMPP 和 TURN 服务器,我希望 XMPP 客户端能够获知或发现我的 TURN 服务器。pidgin/empathy(我需要支持的客户端)有什么作用?有没有规范的跨客户端方法?可能:

  • 在 disco 中嵌入信息(XEP-0030 - 可能被滥用)
  • 服务器使用 XEP-0114 来发挥一些“魔力”
  • 客户端检查 DNS 记录
  • 客户端检查主机(源自 JID)@知名端口
  • 客户什么都不做(我希望不会)

谢谢。

另外,我是在 Jingle/ICE/RTP 的背景下提问的,但这适用于任何将 TURN 与 XMPP 结合使用的情况。

答案1

一些 XMPP 客户端(例如基于 libpurple 的客户端,如 Adium 和 Pidgin)使用 DNS SRV 记录,参见:

http://wiki.xmpp.org/web/SRV_Records#STUN_SRV_records

_stun._tcp.example.net. TTL IN SRV priority weight port target
_stun._udp.example.net. TTL IN SRV priority weight port target

例如

_stun._tcp.example.net. 86400 IN SRV 5 50 3478 server1.example.net.
_stun._tcp.example.net. 86400 IN SRV 10 30 3478 server2.example.net.
_stun._tcp.example.net. 86400 IN SRV 10 10 3478 server3.example.net.
_stun._tcp.example.net. 86400 IN SRV 10 10 3478 server4.example.net.
_stun._tcp.example.net. 86400 IN SRV 15 0 3478 backup.example.net.
_stun._udp.example.net. 86400 IN SRV 5 50 3478 server1.example.net.
_stuns._tcp.example.net. 86400 IN SRV 5 50 5349 server1.example.net.

http://wiki.xmpp.org/web/SRV_Records#TURN_SRV_records

_turn._tcp.example.net. TTL IN SRV priority weight port target
_turn._udp.example.net. TTL IN SRV priority weight port target
_turns._tcp.example.net. TTL IN SRV priority weight port target

例如

_turn._tcp.example.net. 86400 IN SRV 5 50 3478 server1.example.net.
_turn._tcp.example.net. 86400 IN SRV 10 30 3478 server2.example.net.
_turn._tcp.example.net. 86400 IN SRV 10 10 3478 server3.example.net.
_turn._tcp.example.net. 86400 IN SRV 10 10 3478 server4.example.net.
_turn._tcp.example.net. 86400 IN SRV 15 0 3478 backup.example.net.
_turn._udp.example.net. 86400 IN SRV 5 50 3478 server1.example.net.
_turns._tcp.example.net. 86400 IN SRV 5 50 5349 server1.example.net.

相关内容