XMPP Multiple MUC Веб-приложение How-To - PullRequest
1 голос
/ 18 апреля 2011

Я разрабатываю сетевую игру, которая должна поддерживать тысячи (даже десятки тысяч) конечных пользователей.
* Клиентская часть основана на браузере.
* Серверный «движок» будет основан на XMPP с функциональными возможностями MUC.
* Игра состоит из множества сценариев (от десятков до сотен), в которых конечные пользователи (игроки) присоединяются, чтобы принять участие в этом сценарии.
* Каждый сценарий должен иметь уникального «бота», который контролирует поток. Например: игрок X произносит заклинание на игрока Y: бот получает «запрос на чтение заклинания» ДО остальной части комнаты, вычисляет результат и «уведомляет» остальных участников сценария о том, что сделано (игрок X уволен, игрок У ударил ...).

Мои вопросы:
1. Какой сервер XMPP лучше всего подходит для работы?
2. Какой язык на стороне сервера может поддерживать «обмен сообщениями» практически в реальном времени для ожидаемого количества игроков? (24/7, несколько «комнат» [сценариев], десятки тысяч конечных пользователей).
3. Если мы предположим, что каждый сценарий должен иметь возможность разместить до 100 пользователей, и что нам нужен бот, присутствующий в каждом сценарии, чтобы реагировать на действия игроков и «доставлять» их остальным участникам в этом сценарий, какой будет лучший подход:
A. Используйте MUC с ботом, созданным для каждой комнаты, присоединяясь как пользователь, или:
Б. Используйте PubSub или другие методы.

1 Ответ

0 голосов
/ 08 апреля 2012

У меня был похожий сценарий для моего проекта. я использовал ejabberd в качестве сервера и strophejs на стороне клиента. На стороне сервера я использовал java, так как он был мне знаком. Я использовал библиотеку whack . Вот что я сделал.

  1. создал внешний компонент, который будет прослушивать определенный порт.
  2. Когда клиент хочет присоединиться к игре, он отправляет сообщение компоненту
  3. при получении сообщения внешний компонент создает новую комнату и включается в игру как бот.

  4. Эта реализация компонента предоставит слушателям сообщения, уведомления о присутствии и т. Д. Таким образом, компонент или бот могут действовать на каждое сообщение или присутствие.

  5. Если в роме не осталось пользователей, комната будет закрыта.
    Пока мне удалось завершить рабочую демонстрацию, продукт еще не заполнен. У меня тоже возникли некоторые трудности ..: -)

...