Поняв WebRTC, я обнаружил одну вещь, которую трудно понять о серверах TURN. Позвольте мне кратко повторить то, что я понимаю.
Сервер сигнализации: - это пользовательская (не указанная в протоколе) реализация передачи пакетов SDP для согласования соединения WebRTC. Самая забавная / дурацкая реализация - это когда вы копируете / вставляете SDP-пакеты в виде простого текста, как объяснено Chris Ball (sidenote: кто сказал, что «реализация» означает, что вам нужно что-то программировать? :-D).
Сервер STUN: сообщает вам ваш доступный порт IP +. Пока пока NAT! О, только в 80% случаев.
Остальные 20%, насколько я понимаю, TURN-серверы : сервер, доступный для обеих (или более) сторон P2P-соединения, которые передают данные изэти стороны через сервер TURN (обход через ретрансляторы вокруг Nat) и отправляет его другой стороне. Это описано в RFC 5766 .
Моя ситуация (и вопрос, который вытекает из этого)
- У меня есть сервер сигнализации(ууу!)
- У меня есть сервер STUN (ура!)
- У меня есть сервер NodeJS, работающий с Socket.io на случай сбоя P2P через сервер сигнализации и STUN. Он просто получает входящий трафик и транслирует его тому, кому нужно его прослушать.
Я знаю, что мой сервер - это пользовательская программа, которая выполняет те же функции, что и сервер TURN.
Мой вопрос : Чем такой сервер, созданный на заказ, отличается от сервера TURN?
Примечание : в моем случае это NodeJS + Socket.io, но это может быть любой пользовательский сервер (для интереса я также создал реализацию Ruby / Rails с WebSockets без длинного опроса HTTP в качестве запасного варианта).