Ajax Push Engine (Comet) и постоянный чат - как реализовать?

Мы разрабатываем онлайн-игру для веб-браузера в реальном времени и решили использовать APE Server. У нас есть внутриигровая система чата из нашего предыдущего проекта, и мы хотели бы перенести ее на APE. Поскольку мы немного новички в APE, мы не уверены, какой сценарий будет работать лучше или, возможно, не будет работать вообще.

Теперь чат работает следующим образом: - в чате есть 4 комнаты, где пользователи говорят о некоторых аспектах игры (торговля, борьба и т. Д.). Когда пользователь полностью перезагружает страницу, он / она получает последние 30 сообщений из базы данных (базы данных) для открытая комната чата - чат периодически выдает AJAX-запросы, чтобы узнать, есть ли новые сообщения в любой из комнат чата, но фактические последние сообщения загружаются только для той комнаты чата, которая в настоящее время открыта. Чтобы еще больше усложнить задачу, мы разделили чат на отдельные языки - пользователи получают сообщения только на том языке, который указан в их настройках cookie. Они могут изменить его в любое время, и тогда они будут получать сообщения на другом языке.

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

Но самая сложная часть - как организовать хранение сообщений в db и отправку пользователям через APE?

Мы рассмотрели следующие варианты: - пользователь отправляет сообщение в сценарий PHP, оно переходит в базу данных, затем PHP отправляет сообщение в APE через inlinepush (согласно документации, inlinepush поддерживает только один канал, мы не уверены, как это будет работать затем), а затем APE отправляет сообщение всем пользователям (кажется, нам нужно сохранить на сервере APE также язык, предпочитаемый пользователем, чтобы сообщение отправлялось только соответствующим пользователям); - пользователь отправляет сообщение на сервер APE, а сервер APE доставляет его другим пользователям того же языка, а также вызывает сценарий PHP для сохранения сообщения в базе данных; - пользователь отправляет сообщение на сервер APE, а сервер APE доставляет его другим пользователям того же языка и сохраняет сообщение в базу данных, используя собственные возможности APE Mysql.

С одной стороны, мы предпочитаем хранить данные через PHP, потому что у нас есть довольно надежная библиотека доступа к базе данных, и мы не хотели бы переносить ее на APE и Javascript только для хранения сообщений чата (а также у нас нет опыта работы с серверным JS. ). Но если это даст хорошие преимущества, то, конечно, мы будем использовать собственный Mysql от APE.

Также нас беспокоит, сможет ли APE фильтровать всех пользователей по их языку и отправлять сообщения только соответствующим пользователям? Как APE работает с файлами cookie?

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


person JustAMartin    schedule 30.10.2010    source источник


Ответы (2)


Проверьте эту ссылку:

http://www.ape-project.org

Похоже, это проект с открытым исходным кодом, который реализует концепцию AJAX PUSH ENGINE.

Они предоставили вам код (на стороне сервера и на стороне клиента). Хотя, похоже, у него нет поддержки Windows, что я на самом деле изучаю, но это может помочь вам, если вам это нужно.

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

person Moons    schedule 03.09.2012
comment
Да, это тот APE, о котором я говорил в исходном посте. Мы также пробовали socket-io, но в нем были серьезные ошибки и нереализованные функции. В итоге мы использовали node.js и Faye с настраиваемой аутентификацией - и все работало нормально. Фэй довольно легкая и настраиваемая. faye.jcoglan.com - person JustAMartin; 03.09.2012

В итоге мы использовали node.js и Faye с настраиваемой аутентификацией, и это сработало отлично. Faye довольно легкий и настраиваемый, без проблем со сложной настройкой домена. Также было относительно легко написать собственный SQL-сервер с помощью PHP.

Фэй

person JustAMartin    schedule 03.09.2012