Как спроектировать сервис обмена сообщениями от одного пользователя к множеству пользователей в игре - PullRequest
2 голосов
/ 12 марта 2012

Я создаю приложение для Android, которое позволяет отправлять набор точек геолокации от одного пользователя группе пользователей, играющих в игру вместе, но я не знаю, с чего начать отправку сообщений.

У меня была одна идея, которая заключалась в отправке сообщения от одного пользователя на сервер и последующей передаче сервером сообщения другим пользователям, но я не знаю, как сообщить серверу, каким пользователямотправить сообщение на.

Я на правильном пути?Существуют ли уже настроенные службы, которые занимаются этой проблемой?Есть ли у вас другие предложения?Ваши комментарии приветствуются.

1 Ответ

0 голосов
/ 12 марта 2012

Вам просто нужно создать общий контекст, например, тема на сервере для каждой группы пользователей. Отправитель публикует в теме. Слушатели подписаны на тему. Это простой вопрос, когда сервер получает сообщение; сопоставление с темой; и отправка сообщения подписчикам этой темы.

Основная проблема дизайна - определить, нужны ли вам статические или динамические темы. Другими словами, в статических темах серверу предоставляется (статический) список тем (например, через файл конфигурации). В динамическом варианте вам потребуется предоставить механизм для динамического формирования группы.

Второй вопрос - тема долговечности. Могут ли пользователи группы отключиться (из сети), а затем восстановить соединение и получить сообщения, которые они пропустили при отключении? и т.д.

p.s. Существуют различные среды обмена сообщениями, от JMS до AMPQ до PubSubHub для Java, так что вы, вероятно, сможете эффективно использовать существующий код. Но на самом деле это может быть что-то такое же простое, как отправка сообщений на сервер через вызовы REST. Получатели должны будут либо опрашивать сервер (через аналоговый вызов REST), либо поддерживать соединение, чтобы сервер отправлял их. (Последнее, вероятно, не очень хорошая идея, если вы ожидаете много пользователей.)

[окончательное редактирование: если вы собираетесь сниматься самостоятельно, я настоятельно рекомендую вам взглянуть на Redis. Вам должно быть легко быстро прототипировать что-то таким образом.]

...