Синхронизировать данные между внешним и внутренним - PullRequest
3 голосов
/ 22 декабря 2009

Мы разрабатываем браузерную социальную игру, и это игра MMORPG . Мы используем html / javascript / css в качестве внешнего интерфейса (по сравнению с flash). когда пользователь загружает нашу игру в первый раз, будет загружена куча файлов (внешние js / css) и будет запрошено несколько вызовов ajax. Вся страница не будет загружена снова, если пользователь не обновит страницу вручную. И мы создаем объект js для хранения пользовательских данных, таких как наличные деньги, уровень и многое другое. И это может быть изменено во время следующих операций пользователя. поэтому нам нужно синхронизировать данные из бэкэнда. Особая проблема - Данные пользователя также могут пассивно обновляться (другими пользователями) , это может произойти в бою других пользователей. поэтому у меня вопрос как и когда синхронизировать?

До сих пор мы проходили два этапа: 1) всякий раз, когда пользователь нажимает на вкладки (чтобы показать / скрыть div в html) или возможные операции (например, бороться / купить что-то), затем мы вызываем запрос ajax, чтобы получить свежие данные из база данных каждый раз. 2) аналогично 1), но мы просто добавляем прокси, чтобы указать, изменены данные пользователя или нет, чтобы уменьшить бесполезный запрос к базе данных. Сначала вызов ajax переходит к прокси.

для 1) у нас может быть 70% + бесполезных вызовов ajax и запросов к базе данных

для 2) у нас может быть 70% + бесполезных вызовов ajax

Теперь мы используем 2) подход. Но я не думаю, что это лучшее решение, так как у нас все еще 70% бесполезных вызовов ajax. есть ли лучшее решение для этого варианта использования?


объяснения

бесполезный вызов ajax: поскольку интервал между 2 вызовами ajax, пользовательские данные могут вообще не изменяться.

Ответы [ 2 ]

2 голосов
/ 26 декабря 2009

Хороший вопрос, я думаю, что лучшее решение будет заключаться в реализации server push . Идея проста, поскольку у вас есть связь между клиентом и сервером, сервер знает, когда изменяются данные, поэтому он может информировать клиента (в вашем случае html / javascript / css) о любых изменениях. Это должно устранить бесполезный опрос (ваши ajax-вызовы).

Теперь вы можете проверить это или просто поискать в Google другие Ajax Push решения: http://www.icefaces.org/main/ajax-java/ajaxpush.iface

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

0 голосов
/ 26 декабря 2009

Я согласен с Келом здесь Ajax-Push AKA Комета является лучшим решением.
По опыту я уже знаю, что Persevere является хорошим решением и лучше всего работает с Dojo toolkit .
Я также могу предложить попробовать Wt , если производительность критична, так как это позволяет кодировать сайты на C ++. Оба они являются отличным выбором в зависимости от ваших потребностей.

...