Использование протокола MQTT с Node.js

Транспорт телеметрии очереди сообщений, также известный как MQTT, является одним из наиболее широко используемых облегченных протоколов для передачи минимальных накладных расходов данных. Это горячий пирог для разработчиков, которые специально работают с Интернетом вещей (IoT).

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

Использование протокола MQTT в Node.js стало проще, чем когда-либо, благодаря MQTT API, предоставляемому npm. Теперь мы можем легко реализовать протокол MQTT в нашем проекте Node.js. Я собираюсь продемонстрировать базовую установку MQTT в следующем коде с соответствующими комментариями.

const mqtt = require ('mqtt');
var client  = mqtt.connect('mqtt://iot.eclipse.org');

В приведенном выше коде мне требовался API MQTT в объекте с именем mqtt. Используя объект mqtt, я вызвал функцию подключения и передал URL-адрес брокера в качестве аргумента.

Рекомендуется использовать функции подписки и публикации отдельно.

client.on('connect', function () {
  client.subscribe('Topic07');
  console.log('client has subscribed successfully');
});

Мы создали клиентский объект, который вызывает метод on (). Метод on принимает два параметра: один - событие подключения, а другой - функция обратного вызова для подписки на тему. Для нашего лучшего понимания я попросил консольную точку зрения на успех.

client.on('connect', function(){
  setInterval(function(){client.publish('Topic07','cricket');},3000); 
});

Это в значительной степени похоже на предыдущий фрагмент кода (может быть даже таким же, за исключением ключевого слова «только публикация»!), Но теперь вы достаточно умны, чтобы понять, что он предназначен для целей публикации. Тем не менее, я здесь, чтобы уточнить! Пожалуйста, прочтите следующий абзац.

Приведенный выше код публикует сообщение, то есть «крикет», в тему «Topic07» с интервалом в 3 секунды. Я мог бы использовать его без метода setInterval, но это прекратилось бы сразу после отправки одного сообщения на этот раз.

client.on('message', function (topic, message){
  console.log(message.toString()); //if toString is not given, the message comes as buffer
});

Вы должны получать сообщения, опубликованные в темах, на которые вы подписаны.

Сообщение обычно приходит в виде буфера, поэтому мне пришлось преобразовать его в строковый тип данных.

Что ж, эта часть является одной из наиболее часто используемых частей в протоколе MQTT. По сути, при работе с MQTT в этой части приходится проводить большую часть времени.

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

Вы можете очень легко протестировать и поиграть с передачей данных MQTT с помощью бесплатного мобильного MQTT-клиента или клиента MQTT Lens в Google Chrome. Это было бы весело для новичков!

На этом я завершаю этот небольшой и простейший раздел, посвященный базовому MQTT-соединению в программе Node.js. Надеюсь, это может быть полезно для новичков. Не стесняйтесь предлагать любые улучшения. Хорошего дня :)