Если подписчик публикует данные, он не просто подписчик, а издатель.И нет никаких причин, по которым одно и то же лицо не может быть одновременно издателем и подписчиком.
Что касается вашего более общего вопроса о pubsub и MUC, я обнаружил, что этот вопрос часто возникает.в настоящее время.
Очевидно, что на первый взгляд MUC и pubsub очень похожи, они оба предназначены для вещания в группу.Многие приложения могут легко использовать одно или другое без проблем.
Чтобы определить, какой вариант лучше подходит для ваших приложений, давайте рассмотрим некоторые различия между двумя протоколами.
MUC:
- Абсолютно хорошо для стандартных чатов онлайн-пользователей, общающихся друг с другом.Если это то, что вы делаете, используйте его.
- Включает присутствие, то есть уведомление других жителей о присоединении, выходе и изменении статуса.
- Разрешает анонимное частное общение между людьми.
- Работает "из коробки" практически с любым стандартным XMPP-клиентом (для стандартных сообщений чата).
- Автоматический выход из комнаты, когда пользователь отключается или отключается.
- Сообщения с пользовательскими даннымиподдерживаются, что означает, что вы ограничены маршрутизацией стандартных сообщений чата.
Pubsub:
- Один или несколько издателей, отправляющих сообщения многим подписчикам только для чтения, являются основной территорией pubsub.В отличие от MUC, подписчики не публикуют и не получают информацию о других подписчиках.
- Реализации серверов, как правило, имеют гораздо более гибкий контроль доступа для pubsub.
- Только пользовательские полезные нагрузки, не стандартныесообщения чата.
- Опционально имеет полное постоянство элементов.
- Узлом можно управлять как списком элементов (т. е. добавлять / удалять с уведомлением), а не просто как широковещательную рассылку.
- Подписки могут сохраняться в автономном режиме.
Приведенные выше пункты являются лишь руководством.Многое может быть достигнуто с помощью конфигурации сервера.В качестве примера, спецификация MUC допускает помещения, не допускающие трансляции присутствия для определенных классов пассажиров на основе конфигурации.Подвох здесь в реализациях ... поскольку это необычное использование MUC, вы обнаружите, что он может не поддерживаться во многих реализациях MUC.Дело в том, что, поскольку MUC был разработан для чата, а не универсального pubsub, вы в основном найдете все реализации и инструменты для MUC, чтобы сосредоточиться на таком использовании.