2013-06-19 3 views
0

Я делаю сетевую игру с друзьями, в которой два человека находятся на двух разных компьютерах и играют на хром или firefox. Как передать данные игры между двумя компьютерами, если они находятся в одной сети Wi-Fi? Существуют ли для этого API? У HTML5 есть что-то для этого?Одноранговый веб-API в той же сети

P.S. У меня нет сервера

+1

Значит ли он должен быть в режиме реального времени? – Marty

+2

Да. Предполагая, что задействованы только Firefox и Chrome, вы можете использовать WebRTC для одноранговой связи в режиме реального времени между компьютерами. Это очень новый и экспериментальный на данный момент. Скорее всего, вам все равно нужен сервер, чтобы «вводить» их друг в друга. [Вот учебник, чтобы вы начали] (http://www.html5rocks.com/en/tutorials/webrtc/basics/) –

+2

@BenjaminGruenbaum: Очень интересно. Я не знал об этом. Спасибо, что научили меня чему-то сегодня! –

ответ

1

Вы можете использовать данные-канал WebRTC:
http://www.webrtc.org/

или вы можете установить и настроить сервер и использовать WebSockets:
https://en.wikipedia.org/wiki/WebSocket

Недостатки:

Для WebRTC вам понадобится сервер STUN, как я понял, который будет обмениваться используемыми вами IP-адресами. В остальном измельчение одноранговое.

В настоящее время в WebRTC нет примеров, поскольку он все еще находится в разработке. Только протокол Chrome и Firefox (ночной) поддерживает протокол.

HTML5Rocks написал хорошее введение на это (слишком много, чтобы вставить сюда):
http://www.html5rocks.com/en/tutorials/webrtc/basics/

Для WebSockets вам нужен веб-сервер, функционировать в качестве концентратора. Это, однако, просто настроить, поскольку он использует стандартный протокол HTTP. Если вы находитесь на платформе .Net, вы можете использовать, например, SignalR, который легко встает и работает.

Обратите внимание, что для WebSocket он должен первоначально иметь одинаковое происхождение. Это, однако, возможно обойти (CORS). Обычно сценарий, использующий WebSockets, находится на одной и той же веб-странице и также связывается с тем же доменом, с которого он был загружен.

Другие варианты использования WebSockets, которые могут использоваться с node.js, socket.io, ruby ​​и т. Д.

UPDATE:

Если вы не имеете одноранговая сеть сервер собирается быть трудным с простым html5. Вы должны будете иметь что-то, что ведет переговоры о соединениях.

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

Смотри, например, это (бесплатно с открытым исходным кодом TURN/сервер STUN):
http://code.google.com/p/rfc5766-turn-server/

Примечание: этот сервер цели * NIX. Я не мог найти бесплатное решение для Windows, если это то, что вы используете. В качестве другого варианта существуют коммерческие решения.

+1

@Marty уже там .. ударил save случайно – K3N

+0

Стоит упомянуть, если вы используете веб-сокеты _all_ your данные будут проходить через сервер. Используя WebRTC, только введение осуществляется через сервер, но все фактические игровые сообщения - P2P. Вы можете сделать оба варианта, используя только JavaScript, если хотите. Например, WebSockets с socket.io и nodejs. –

+0

@BenjaminGruenbaum, как правило, верно, вы можете настроить сервер/websockets для не одного источника, но обычно это не проблема, поскольку сценарий обычно запускается на той же загруженной странице. – K3N

-1

Существует несколько способов решения вашей проблемы, и какой метод работает лучше всего будет зависеть от ваших требований к игре и того, как вы ее создаете.

Я не знаю ни одной технологии, которая будет напрямую отправляться из браузера в браузер без какого-либо сервера, сидящего между ними.

Посмотрите либо HTML5 WebSockets: http://www.tutorialspoint.com/html5/html5_websocket.htm

В качестве альтернативы вы можете хранить данные для игры и есть клиент игры получить необходимую информацию из базы данных на каждом повороте или тик таймера и т.д.

+0

WebSockets не магически пересекают ограничения безопасности одного и того же происхождения. –

+0

Упоминать? – JanR

+1

Ваш ответ не соответствует теме, поскольку пользователю нужна одноранговая распределенная игра, тогда как вы предлагаете решение для серверной игры. Даже если это не так с WebSockets, вам нужно будет предоставить возможность превратить сокеты в одно и то же происхождение, что невозможно. RTCPeerSockets - это путь вперед. –

Смежные вопросы