2009-12-22 2 views
3

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

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

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

для 2) мы можем иметь 70% + бесполезен Аякс называет

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


объяснения

бесполезно Аякса вызов: так как интервал между 2 АЯКС вызовов, пользовательские данные не могут быть изменены на всех.

ответ

2

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

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

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

0

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

Смежные вопросы