Вам просто нужно создать общий контекст, например, тема на сервере для каждой группы пользователей. Отправитель публикует в теме. Слушатели подписаны на тему. Это простой вопрос, когда сервер получает сообщение; сопоставление с темой; и отправка сообщения подписчикам этой темы.
Основная проблема дизайна - определить, нужны ли вам статические или динамические темы. Другими словами, в статических темах серверу предоставляется (статический) список тем (например, через файл конфигурации). В динамическом варианте вам потребуется предоставить механизм для динамического формирования группы.
Второй вопрос - тема долговечности. Могут ли пользователи группы отключиться (из сети), а затем восстановить соединение и получить сообщения, которые они пропустили при отключении? и т.д.
p.s. Существуют различные среды обмена сообщениями, от JMS до AMPQ до PubSubHub для Java, так что вы, вероятно, сможете эффективно использовать существующий код. Но на самом деле это может быть что-то такое же простое, как отправка сообщений на сервер через вызовы REST. Получатели должны будут либо опрашивать сервер (через аналоговый вызов REST), либо поддерживать соединение, чтобы сервер отправлял их. (Последнее, вероятно, не очень хорошая идея, если вы ожидаете много пользователей.)
[окончательное редактирование: если вы собираетесь сниматься самостоятельно, я настоятельно рекомендую вам взглянуть на Redis. Вам должно быть легко быстро прототипировать что-то таким образом.]