Позволяют ли веб-сокеты общаться по протоколу p2p (браузер с браузером)? - PullRequest
63 голосов
/ 07 ноября 2010

Чтобы уточнить, когда я спрашиваю о связи между браузером и браузером, я имею в виду отсутствие сервера между сообщениями. Я хотел бы реализовать что-то подобное для игры. Если p2p в websockets не возможен, есть ли подобные альтернативы? Любая помощь приветствуется.

Ответы [ 5 ]

50 голосов
/ 07 ноября 2010

Нет.Браузеры могут только инициировать соединения WebSockets, но не получать их. Спецификация API браузера W3C определяет только способ запуска исходящего соединения.

Вы можете создать приложение, которое будет как инициировать, так и принимать соединения WebSockets, но браузеры этого не делают.

Вы можете взглянуть на Приложение Pusher , которое можно использовать для создания приложения WebSockets с несколькими клиентами.Служба предоставляет до 20 одновременных клиентов WebSockets бесплатно (вы можете заплатить за большее масштабирование).

Обновление :

Протокол WebRTC иAPI быстро развивается и позволяет устанавливать канал данных между двумя узлами (вам все еще может понадобиться сервер STUN / TURN для первоначального обхода и настройки NAT).

31 голосов
/ 26 января 2013

Теоретически это возможно с 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 значение true (about: config).

6 голосов
/ 08 января 2014

Я читал о websocket и peer 2 peer и нашел PeerJS .

Я пока ничего не сделал, но на примерах это выглядит многообещающе.

0 голосов
/ 24 апреля 2017

Простой и надежный кросс-браузерный способ - использовать http://httprelay.io с вызовами AJAX.Он также реализует связь один ко многим, что может быть полезно для разработки игр.

0 голосов
/ 05 марта 2014

В наши дни это возможно, в настоящее время только Chrome, FF и Opera поддерживают его (на рабочем столе).

В настоящее время в Интернете начинают появляться некоторые библиотеки, такие как PeerJS и js-platform-p2p , которые в значительной степени упрощают вещи.

...