Разделяют ли веб-сайты для связи p2p (браузер с браузером)?

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

Ответ 1

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

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

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

Обновление

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

Ответ 2

В теории это возможно с 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).

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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