Как я могу реализовать простой серверный сервер p2p для обмена сообщениями браузера с минимальными издержками? - программирование
Подтвердить что ты не робот

Как я могу реализовать простой серверный сервер p2p для обмена сообщениями браузера с минимальными издержками?

Я пытаюсь создать некоторые базовые реализации простых игр (tic tac toe - это начальный проект), который можно воспроизводить через Интернет, не требуя центрального сервера. Эта страница даже не должна быть размещена и может быть запущена локально на машине, или она может быть размещена на веб-сервере. При размещении игры страница сообщит об этом хозяину своего IP-адреса, который затем может быть отправлен другим способом (телефону, мгновенному сообщению и т.д.) Другу. Этот друг вводит или копирует/вставляет IP-адрес в диалог соединения и может играть в игру. Я бы хотел, чтобы эти 2 участника могли это сделать без установки какого-либо дополнительного программного обеспечения и без обращения к центральному серверу любого типа.

Я рассмотрел множество потенциальных решений с участием node.js, webrtc, websockets, flash, java и т.д. У каждого из них есть проблема, связанная с ним, например, требующая центрального сервера или требующая от клиента возможно, придется загружать что-то, что еще не установлено на их компьютере, или передавать только аудио и видео и не полезно для отправки сообщений данных. Может показаться тривиальным сказать кому-то, что им нужно скачать java.. или мне разработать приложение со вспышкой, но это все противоречит моим конечным целям.

Если просто невозможно сделать то, что я пытаюсь сделать полностью в javascript, тогда это просто невозможно. Но я не понимаю, почему этого не может быть, учитывая, что браузеры способны самостоятельно отправлять и получать текстовые данные в URLS, которые разрешают IP-адреса или напрямую к IP-адресам. Другие решения приветствуются, но если это невозможно сделать, это действительно должно быть.

Простое объяснение точных требований к тому, что я пытаюсь сделать:

  • Следует использовать полностью бесплатные (как в пиве) технологии. (без вспышки, я понимаю, что веб-приложения для флеш-плеера могут быть закодированы бесплатно, но для сверстников в страте требуется регистрация бета-ключа, который, предположив, что я могу получить бесплатно, не обязательно останется свободным навсегда.)

  • Нет внешних серверов или ложных одноранговых узлов. (опять же, как во флэш-или единичных решениях, где имитация одноранговой сети может быть достигнута до тех пор, пока вы используете свой центральный сервер)

  • Нет загрузки клиента (конечно, у большинства людей установлена ​​java или флеш-память, но многие этого не делают, а java - довольно тяжелая загрузка и не дружелюбная для неграмотных пользователей компьютера. Она даже пытается установить панели инструментов сейчас. В дополнение к этому многие мои пользователи не захотят скачивать что-либо вообще, в том числе java или единство. У кого есть свои проблемы, связанные с этим проектом, как уже упоминалось)

Итак, если ajax может отправить запрос на указанный IP-адрес и прослушать ответ. Почему я не могу получить простой обмен сообщениями в чистом js? Или я могу?

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

Я что-то пропустил?

4b9b3361

Ответ 1

После того, как был рекомендован pubnub, я посмотрел туда и был частично впечатлен. Тем не менее, я в конце концов наткнулся на то, что я искал БЕСПЛАТНО. Ответ RTCDataChannel. Этот сайт, наконец, показал, что то, что я хочу, возможно. Поддержка браузером этой функции небольшая, но растущая, и все испытания усилили мою веру в растущую поддержку одноранговых приложений в сообществе браузеров.

Ответ 2

Таким образом, если ajax может отправить запрос на указанный IP-адрес и прослушать для ответа.. почему я не могу получить простой одноранговый обмен сообщениями в чистом виде JS? Или я могу?

Это связано с тем, что HTTP-сервер должен обрабатывать запрос ajax, поэтому вам все равно нужно установить сервер для каждого клиента.

скажите, что вы хотите

  • бесплатно
  • нет внешних серверов
  • отсутствие загрузки клиентом

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

Мое предложение pubnub. Для этого решения по-прежнему нужен сервер, и он не является бесплатным (у них есть свободный уровень использования). Но хорошо, что у вас есть подражание p2p-соединению, не занимаясь сервером, и загрузка на клиент не требуется.