Требуется ли сервер PeerJS или WebRTC для однорангового соединения или только между клиентами?
Я работаю над проектом, который должен позволить пользователям соединяться друг с другом (1 на 1) и общаться в чате через веб-сайт. Если я пойду с реализацией http://peerjs.com/ или другим пользовательским решением для однорангового соединения WebRTC, понадобится ли мне сервер для посредничества? Если так, какова цель этого? Я думал, что весь смысл однорангового соединения WebRTC состоял в том, чтобы разрешить прямые пользовательские соединения.
2 ответа
Я думал, что весь смысл однорангового соединения WebRTC состоял в том, чтобы разрешить прямые пользовательские соединения.
Прямое подключение пользователя к пользователю означает, что P2P-соединение - это когда два пользователя обмениваются данными напрямую без какого-либо сервера ретрансляции в середине. Но для того, чтобы они были такими, они должны сначала соединиться друг с другом. И для этого им нужны друг другу IP-адреса и другая сопутствующая информация.
Два устройства в Интернете не могут знать адреса друг друга, если они каким-то образом не обмениваются этой информацией между собой. Вот почему используются серверы сигнализации, такие как SIP,XMPP. Узлы подключаются к этим серверам для обмена данными IP. Когда узел A и узел B входят в систему, скажем, на SIP-сервере, тогда, когда узел A хочет установить связь с узлом b,
1) А отправит свою IP-информацию на sip-сервер. Sip-сервер перенаправит эту информацию в B.
2) После получения информации узел B отправит свои IP-адреса на сервер SIP, а сервер SIP перенаправит его на узел A.
3) После того, как они оба узнают IP-информацию друг друга, они могут подключаться друг к другу напрямую, без повторного использования SIP-сервера.
Вот что такое P2P-соединение. Он использует сервер сигнализации только для создания соединения между одноранговыми узлами, после чего его соединение P2P.
Но соединение P2P не всегда возможно даже после знания всей информации Ip каждого узла. Есть некоторые NAT, которые делают невозможным создание P2P-соединения. Но это другая тема.
Надеюсь, это прояснит ваше замешательство.
Пэрам нужен какой-то способ найти друг друга и установить медиа-соединение. Сервер - это удобный способ сделать это. Вы можете настроить прямое соединение для сигнализации для обмена сообщениями SDP, но будет ли это работать, зависит от того, знаете ли вы, что адреса конечных точек и брандмауэры настроены правильно. Например, мобильные телефоны и ноутбуки будут часто менять IP-адреса, что затрудняет их непосредственное определение. Процесс обмена информацией для запуска однорангового соединения называется сигнализацией.
Носитель в одноранговом соединении обычно передается между одноранговыми узлами, хотя вы также можете выполнять такие действия, как отправка носителей через сервер TURN.
Часть сигнализации процесса WebRTC очень легкая по сравнению со средой, передаваемой через одноранговое соединение. Из-за простоты использования сервера для сигнализации, серверы часто используются для сигнализации.