Как я могу имитировать одноранговый канал связи, используя PHP, MySQL DB и JavaScript? - PullRequest
4 голосов
/ 30 августа 2011

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

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

Чтобы лучше объяснить это ... игрок, чей ход (конечно, браузер) отправляет асинхронный вызов. просьба обновить информацию об игре, именно тогда, когда он сделает свой ход. Тем временем оппонент отправляет PERIODIC запросы, «спрашивая», изменилось ли что-нибудь. Если что-то меняется, роли обновляются после обновления доски.

Таймеры отстают от функциональности движка, поэтому мой вопрос к вам таков: как бы вы могли симулировать ком-канал между двумя игроками, стараясь не создавать слишком большую нагрузку на сервер, но также обновлять игры? настолько быстро, насколько это возможно, для того, чтобы сохранить «живое» чувство к нему. Это наиболее важно в 1-минутных играх (одна из доступных категорий). Потому что в этом случае запросы должны выполняться ОЧЕНЬ часто (не менее 1 секунды). Но ответы сервера могут затянуться, на сервере будет много стресса, если одновременно доступны сотни игр и т. Д., Так что вы видите мою проблему.

Я с нетерпением жду, чтобы услышать от вас, ребята, и выбрать ваш мозг, если у вас есть хорошие идеи:)

Ура! Андрей

PS: Если вы хотите попробовать это, имя будет e-chess960.com

Ответы [ 2 ]

3 голосов
/ 30 августа 2011

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

сокет-серверам требуется сокетный доступ, для которого обычно требуется vps вместо общего сервера.

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

0 голосов
/ 30 августа 2011

На самом деле вам нужно не тянуть сервер каждую секунду, а вместо этого держать соединение открытым и использовать шаблон наблюдателя для рассылки обновлений определенным клиентам (другими словами: push вместо pull),Таким образом, ресурсы вашего сервера не будут завалены новым подключением каждую секунду и каждого клиента.Библиотека для достижения этой цели - библиотека Comet.Посмотрите этот хороший учебник для примера приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...