Похоже, ваши подписывающиеся устройства находятся в локальных сетях, и да, вам потребуется статический IP-адрес для сети и переадресации внутри нее (не говоря уже об исключении брандмауэра во многих системах) для локального устройства для обслуживания входящих запросов.Независимо от протокола, ваши подписчики не обязательно должны быть серверами. Гораздо безопаснее и, в конечном счете, проще заставить их запрашивать центральный сервер / систему.Только этой системе нужен IP.
WebSockets не требует переадресации портов - они часто используются, чтобы избежать этого.Клиент открывает соединение с сервером, затем продолжает использовать его для отправки и получения.Это не требует переадресации портов, как ваш компьютер при получении страницы с веб-сайта.Если ваш издатель является сервером или другой системой, доступной через Интернет, вы можете выполнить работу, настроив для своих подписчиков открытие веб-сокетов.
Однако вы все равно можете захотеть MQTT:
- Похоже, ваш издатель может быть кем-то иным, нежели веб-сервером, и может быть менее подходящим для обслуживания, чем ваши клиенты, поскольку вы задали этот вопрос.С клиентом MQTT он может публиковать данные на сервере-посреднике MQTT, который затем будет передавать сообщения клиентам подписчиков.
- Разработка надежных функций публикации-подписки - дополнительная работа, и существующее программное обеспечение MQTT часто будетобслуживать лучше, чем новые разработки.
С некоторыми дополнительными настройками можно даже делать подписки MQTT через WebSockets , но даже обычная подписка отлично работает, чтобы избежать статическойПравила IP, перенаправления портов и входящего брандмауэра .