HTTP push примеры в Flex - PullRequest
       1

HTTP push примеры в Flex

0 голосов
/ 31 августа 2009

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

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

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

1) Каждый клиент будет выдавать большое количество запросов (не знаю, как будет работать сервер, если у меня, например, 100 таких клиентов)

2) Если игроки выберут игру с ограничением по времени, например, 5 минут / за игру, очень важно показать им ситуацию на доске, как только она изменится (без паузы), но таймер отправит только запрос в случае таймера, поэтому, если, например, я выберу интервал между тиками 5 секунд, это будет означать, что 5 секунд другая сторона не будет знать об изменениях ситуации.

Ответы [ 4 ]

2 голосов
/ 31 августа 2009

Думайте об этом так. Если вы будете опрашивать каждые 1 или 2 секунды, это должно быть достаточно быстро, чтобы не быть замеченным ни одним из клиентов. Простая проверка запросов REST на изменения - чертовски быстрая, и современные веб-серверы должны иметь возможность обрабатывать 100 таких запросов без проблем.

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

Если вы беспокоитесь позже, у вас всегда могут быть законченные таймеры. например, проверьте через 100 мс, 200 мс, 400 мс, 800 мс, 1600 мс и т. д. с ограничением в 5 секунд или чем-то еще.

Посмотрите на этот код для некоторых идей, может быть, так как чат использует схожие концепции: http://anantgarg.com/2009/05/13/gmail-facebook-style-jquery-chat/

2 голосов
/ 31 августа 2009

Лучше всего использовать AMF (формат сообщения действия) для связи с приложением Flex См. PyAMF Django HowTo и, в частности, ссылки в разделе «Ссылки» с примерами.

2 голосов
/ 31 августа 2009

Одним из способов является использование TCP Socket от клиента для подключения к вашему серверу. Пусть клиент прослушивает данные, а сервер отправляет обновления по мере необходимости. Это может потребовать изменения брандмауэра (чтобы разрешить использование порта) и сервера, который принимает несколько постоянных клиентских подключений. Это может работать только для фиксированного небольшого числа клиентов, поскольку, если вы оставляете открытыми несколько подключений, это повлечет за собой некоторые издержки сервера.

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

0 голосов
/ 01 сентября 2009

Ознакомьтесь с примерами сообщений в Tour de Flex . Они работают с различными бэк-эндами, включая BlazeDS. Но я не уверен, что в Python есть реализация обмена сообщениями.

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