Мы разрабатываем онлайн-игру для веб-браузера в реальном времени и решили использовать 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 кажутся немного неудобными для настройки, но мы пока не нашли лучшей альтернативы.