Разрешены ли веб-сокеты для связи по p2p (от браузера к браузеру)?
Чтобы уточнить, когда я спрашиваю о связи между браузерами и браузерами, я имею в виду отсутствие сервера между пересылкой сообщений. Я хотел бы реализовать что-то подобное для игры. Если p2p в websockets не возможен, есть ли подобные альтернативы? Любая помощь приветствуется.
5 ответов
Нет. Браузеры могут только инициировать соединения WebSockets, но не получать их. Спецификация API браузера W3C только определяет, как установить исходящее соединение.
Вы можете создать приложение, которое будет инициировать и принимать соединения WebSockets, но браузеры этого не делают.
Вы можете взглянуть на приложение Pusher, которое можно использовать для создания приложения WebSockets с несколькими клиентами. Сервис предоставляет до 20 одновременных клиентов WebSockets бесплатно (вы можете заплатить за большее масштабирование).
Обновление:
Протокол и API WebRTC быстро развиваются и позволяют устанавливать канал данных между двумя узлами (вам все еще может понадобиться сервер STUN/TURN для первоначального обхода и настройки NAT).
Теоретически это возможно с помощью WebRTC DataChannel:
RTCDataChannel - это API-интерфейс WebRTC для высокопроизводительной и одноранговой передачи произвольных данных с низкой задержкой. API прост - похож на WebSocket - но связь происходит напрямую между браузерами, поэтому RTCDataChannel может быть намного быстрее, чем WebSocket, даже если требуется сервер ретрансляции (TURN) (когда "дырокол" для работы с брандмауэрами и NAT не работает).
"Теоретически", потому что он еще не поддерживается стабильным браузером, и вам все еще нужен сервер ретрансляции (TURN), если один из браузеров находится за симметричным NAT. Тем не менее, это действительно многообещающая особенность.
Обновление: Chrome 26 и Firefox 22 поддерживают RTCDataChannel по умолчанию и Firefox 19-21, если вы включили WebRTC, установив media.peerconnection.enabled
к истине (о: конфиг).
Я читал о websocket и peer 2 peer и нашел PeerJS.
Я пока ничего не сделал, но на примерах это выглядит многообещающе.
Сейчас это возможно, в настоящее время только Chrome,FF и Opera поддерживают его (на рабочем столе).
Сейчас в Интернете начинают появляться некоторые библиотеки, такие как PeerJS и js-platform-p2p, которые в значительной степени упрощают вещи.
Простой и надежный кросс-браузерный способ заключается в использовании http://httprelay.io/ с вызовами AJAX. Он также реализует связь один ко многим, что может быть полезно для разработки игр.