Нужен ли абоненту MQTT статический IP-адрес? - PullRequest
0 голосов
/ 15 марта 2019

Я хочу разработать модель издатель -> подписчик с 1 издателем и множеством подписчиков в nodejs.

В настоящее время моя идея заключалась в том, чтобы использовать обычный веб-сокет. Проблема заключается в том, что каждому подписчику требуется статический IP-адрес и переадресация портов, если он работает через Интернет. Это не соответствует требованиям.

Решением этой проблемы является MQTT, так как он должен подходить для этого варианта использования, но я видел, что он также работает через веб-сокеты, что должно приводить к той же проблеме, или MQTT обрабатывает ее по-другому?

По сути, мне нужно решение, где у издателя есть статический ip, а подписчик может быть где угодно в мире. Это возможно с MQTT или мне нужно другое решение?

Ответы [ 2 ]

0 голосов
/ 16 марта 2019

Нет, только брокеру MQTT требуется фиксированный IP-адрес (и предпочтительно запись DNS), чтобы клиенты знали, где его найти.

Все клиенты MQTT (как подписчики, так и издатели), будь то собственные MQTT или MQTT через веб-сокеты, подключаются к брокеру. Это означает, что они будут работать даже за NAT-маршрутизатором, работающим с динамическим IP-адресом (все они будут отключаться при изменении IP-адреса, но почти все клиенты MQTT автоматически переподключаются).

Эти функции делают MQTT хорошим выбором для потребительских IoT-устройств, поскольку описанная выше ситуация практически во всех домашних широкополосных настройках.

0 голосов
/ 15 марта 2019

Похоже, ваши подписывающиеся устройства находятся в локальных сетях, и да, вам потребуется статический IP-адрес для сети и переадресации внутри нее (не говоря уже об исключении брандмауэра во многих системах) для локального устройства для обслуживания входящих запросов.Независимо от протокола, ваши подписчики не обязательно должны быть серверами. Гораздо безопаснее и, в конечном счете, проще заставить их запрашивать центральный сервер / систему.Только этой системе нужен IP.

WebSockets не требует переадресации портов - они часто используются, чтобы избежать этого.Клиент открывает соединение с сервером, затем продолжает использовать его для отправки и получения.Это не требует переадресации портов, как ваш компьютер при получении страницы с веб-сайта.Если ваш издатель является сервером или другой системой, доступной через Интернет, вы можете выполнить работу, настроив для своих подписчиков открытие веб-сокетов.

Однако вы все равно можете захотеть MQTT:

  • Похоже, ваш издатель может быть кем-то иным, нежели веб-сервером, и может быть менее подходящим для обслуживания, чем ваши клиенты, поскольку вы задали этот вопрос.С клиентом MQTT он может публиковать данные на сервере-посреднике MQTT, который затем будет передавать сообщения клиентам подписчиков.
  • Разработка надежных функций публикации-подписки - дополнительная работа, и существующее программное обеспечение MQTT часто будетобслуживать лучше, чем новые разработки.

С некоторыми дополнительными настройками можно даже делать подписки MQTT через WebSockets , но даже обычная подписка отлично работает, чтобы избежать статическойПравила IP, перенаправления портов и входящего брандмауэра .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...