Google App Engine: постоянное соединение браузера с сервером - PullRequest
3 голосов
/ 19 декабря 2010

Я играл с канальным API Google App Engine, чтобы создать многопользовательскую игру в реальном времени, похожую на http://rawkets.com/. Поскольку этот API в основном «односторонний» (не поддерживает постоянный подключение к серверу), я просто выдаю новые запросы AJAX POST (JQuery) со скоростью около 30 в секунду.

Кажется, он генерирует большие служебные данные (5-6 Кбит / с), которые я хотел бы уменьшить, если это возможно. В идеале я хотел бы создать только одно соединение, которое длится чуть менее 30 секунд (тайм-аут запроса appengine) и продолжает отправлять свежие данные каждые 30 миллисекунд в течение всего времени соединения. Затем сервер будет использовать API канала для «распространения информации» среди всех других соответствующих клиентов. Надеюсь, что это имеет какой-то смысл!

Есть идеи?

Ответы [ 3 ]

1 голос
/ 19 декабря 2010

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

  1. Вы не можете транслировать выходные данные с сервера, они будут буферизироваться, а затем отправляются при выходе из обработчика .
  2. Ваше приложение не будет автоматически масштабировано , если ваши запросы не вернутся в менее 1000 мс .

Как sje397Следует отметить, что Channel API в настоящее время не поддерживает обычную трансляцию - вам нужно будет реализовать свою собственную.Однако, если вы просто пытаетесь столкнуться с несколькими соседними игроками, реализация вашего собственного решения может не быть проблемой.

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

0 голосов
/ 20 декабря 2010

Это просто не то, как работает HTTP - звучит так, как будто вы хотите ближе к (готовящемуся) API веб-сокетов, который еще широко не поддерживается в браузерах или вообще не поддерживается App Engine.

Тем не менее, 30 запросов в секунду на клиента кажутся особенно нелепо высокими - ни один пользователь на клавиатуре не может генерировать такое количество событий.

0 голосов
/ 19 декабря 2010

Широковещательная рассылка не работает слишком хорошо, используя встроенный канал API (хотя они и сказали в списке рассылки, что что-то готовится).

Возможно, вы захотите проверить сторонние«реальный» поставщик веб-сокетов.Например, http://pusherapp.com.

...