Я хочу разработать приложение для чата и использовать MQTT и веб-сокет для живого уведомления, активного статуса на клиенте (в основном в веб-браузере). Мне интересно, как я могу наилучшим образом наладить связь между клиентами, чтобы снизить нагрузку на MQTT и обеспечить бесперебойную связь.
Например, если клиент A отправляет сообщение клиенту B, тогда варианты
1) Создайте отдельную тему для общения между клиентом А и клиентом Б
Это не выглядит хорошей идеей, так как если количество клиентов в приложении увеличится, то количество тем между каждым пользователем сильно увеличится, что создаст нагрузку на брокера MQTT.
2) Отправить сообщение на основе уникального идентификатора клиента
MQTT не позволяет публиковать сообщения на основе идентификатора клиента
3) Сделать единую тему для общения между всеми клиентами (все клиенты подпишутся на тему и соответствующий клиент выполнит свою операцию, если сообщение относится к ней)
Многие клиенты будут получать нежелательные сообщения, и по мере роста числа клиентов это усугубит проблему.
В случае, если все клиенты подписываются на одну тему, можно ли отфильтровать клиента, который должен получить сообщение
Какие могут быть другие решения для создания удобного приложения для чата и какое решение используют другие приложения, такие как slack, telegram, whatsapp и т. д.. Используют ли они также MQTT, и если нет, то как они этого добиваются.
Заранее спасибо