Как использовать идентификатор клиента в Mosquitto MQTT? - PullRequest
0 голосов
/ 02 июня 2018

Я новичок в Москитто.Я установил Mosquitto и Mosquitto Client в Ubuntu.Я пытаюсь подписаться с помощью идентификатора клиента и опубликовать его с помощью идентификатора клиента, просмотрите команду, которую я запустил в консоли, но, к сожалению, подписчик не получает сообщение.

Подписка mosquitto_sub -h localhost -t temp/city1 -c -q 2 --id client-one

Публикация mosquitto_pub -h localhost -t temp/city1 -m "32 Celsius" -q 2 --id client-one

но если я опубликую сообщение без идентификатора клиента, подписчик получает сообщение, поэтому, пожалуйста, помогите мне, где я допустил ошибку?

1 Ответ

0 голосов
/ 02 июня 2018

Как уже упоминалось в комментарии, clientIds - это просто уникальные идентификаторы для каждого клиента, подключенного к брокеру.

ClientIds должны быть полностью уникальными, если второй клиентпытается подключиться к клиенту, который уже подключен, брокер должен отключить первого клиента, чтобы разрешить подключиться второму клиенту (это продиктовано спецификацией).В приведенном вами примере подписчик будет отключен до того, как получит сообщение, опубликованное вторым.

Сообщения публикуются в темах , и клиенты могут подписаться на эти темы (или шаблоны тем).с подстановочными знаками)

Таким образом, используя инструменты командной строки mosquitto, вы можете сделать следующее:

mosquitto_sub -v -t 'foo/bar'

Это подпишется на тему foo/bar и распечатает тему, а затем сообщение, когдакогда-либо сообщение опубликовано на эту тему.Чтобы опубликовать сообщение, содержащее строку testing, вы должны использовать:

mosquitto_pub -t 'foo/bar' -m 'testing'

Инструменты командной строки mosquitto будут генерировать случайные клиентские числа, если ни одна из них не указана в командной строке.

...