Перейти к основному содержимому

04 Группа “Сеть”. Описание узлов

Узел mqtt (вход)

Узел mqtt (вход) в Палитре
Узел mqtt (вход) на Холсте

Подключается к MQTT брокеру и подписывается на сообщения указанной темы.

Выводит:

  • payload строка | буфер – строка, если не обнаружено как двоичный буфер.
  • topic строка – тема MQTT, использует / в качестве разделителя иерархии.
  • qos число – 0: приходит не более одного раза, 1: приходит не менее одного раза, 2: приходит только один раз.
  • retain логич.тип – значение true указывает, что сообщение было сохранено и может быть устаревшим.

Тема подписки может включать подстановочные знаки MQTT, + для одного уровня, # для нескольких уровней.

Для этого узла требуется соединение с брокером MQTT. Это настраивается нажатием на значок карандаша.

Несколько MQTT узлов (вход или выход) могут совместно использовать одно и то же соединение с брокером, если это необходимо.

Узел mqtt (выход)

Узел mqtt (выход) в Палитре
Узел mqtt (выход) на Холсте

Подключается к MQTT брокеру и публикует сообщения.

Принимает:

  • payload строка | буфер – данные для публикации. Если это свойство не установлено, сообщение не будет отправлено. Чтобы отправить пустое сообщение, установите для этого свойства пустую строку.
  • topic строка –тема MQTT для публикации.
  • qos число – 0: приходит не более одного раза, 1: приходит не менее одного раза, 2: приходит только один раз. По умолчанию 0.
  • retain логич.тип – установите значение true, чтобы сохранить сообщение в брокере. По умолчанию false.

Свойство msg.payload используется в качестве данных опубликованного сообщения. Если оно содержит объект, то он будет преобразован в строку JSON перед отправкой. Если оно содержит двоичный буфер, сообщение будет опубликовано как есть.

Используемая тема может быть настроена в узле или, если оставить ее пустой, может быть установлена с помощью msg.topic.

Аналогично, значения QoS и сохранения могут быть сконфигурированы в узле или, если они оставлены пустыми, установлены с помощью msg.qos и msg.retain соответственно. Чтобы удалить ранее сохраненную тему из брокера, отправьте пустое сообщение в эту тему с установленным флагом сохранения.

Для этого узла требуется соединение с брокером MQTT. Это настраивается нажатием на значок карандаша.

Несколько узлов MQTT (вход или выход) могут совместно использовать одно и то же соединение с брокером, если это необходимо.

Узел http вход

Узел http вход в Палитре
Узел http вход на Холсте

Создает конечную точку HTTP для веб-службы.

Выводит:

  • payload – для GET-запроса содержит объект с любыми параметрами строки запроса. В противном случае содержит тело HTTP-запроса.
  • req объект – объект HTTP-запроса. Этот объект содержит несколько свойств, которые предоставляют информацию о запросе:
  1. body - тело входящего запроса. Формат будет зависеть от запроса.
  2. headers - объект, содержащий заголовки HTTP-запроса.
  3. query - объект, содержащий любые параметры строки запроса.
  4. params - объект, содержащий любые параметры маршрута.
  5. cookies - объект, содержащий куки запроса.
  6. files - если включено в узле, объект, содержащий любые файлы, загруженные как часть POST-запроса.
  • res объект – объект ответа HTTP. Это свойство не должно использоваться напрямую. Для ответа на входящий HTTP запрос используется узел ответа HTTP Response. Это свойство должно оставаться в сообщении вплоть до передачи узлу ответа.

По настроенному пути узел будет принимать запросы определенного типа. Путь может быть указан конкретно, например /user, или включать именованные параметры, которые принимают любое значение, например /user/:name. Когда используются именованные параметры, их фактическое значение в запросе будет доступно в msg.req.params.

Для запросов, которые содержат тело, такие как POST или PUT, содержимое запроса доступно в msg.payload.

Если тип содержимого запроса может быть определен, тело будет преобразовано в любой подходящий тип. Например, application/json будет преобразован в объект JavaScript.

к сведению

Этот узел не отправляет никакого ответа на запрос. Поток должен включать узел ответа HTTP Response для завершения запроса.

Узел http ответ

Узел http ответ в Палитре
Узел http ответ на Холсте

Отправляет ответ на запрос, полученный от узла HTTP Ввод.

Принимает:

  • payload строка – тело ответа.
  • statusCode число – если установлено, то используется как код состояния ответа. По умолчанию: 200.
  • headers объект – если установлено, предоставляет заголовки HTTP для включения в ответ.
  • cookies объект – если установлено, может использоваться для записи или удаления куков.

Свойства statusCode и headers также могут быть установлены внутри самого узла, настройками код состояния и заголовки соответственно. Если свойство установлено в узле, оно не может быть переопределено соответствующим свойством сообщения.

Обработка куков

Свойство cookies должно быть объектом пар имя/значение. Значением может быть либо строка для установки значения куки с параметрами по умолчанию, либо это может быть объект параметров.

В следующем примере устанавливаются два куки - один с именем name и значением nick, другой с именем session и значением 1234 и сроком действия в 15 минут.

msg.cookies = {
name: 'nick',
session: {
value: '1234',
maxAge: 900000
}
}

Допустимые параметры включают в себя:

  • domain - (Строка) доменное имя для куки
  • expires - (Дата) срок годности по Гринвичу. Если не указан или установлен в 0, создает сессионный куки
  • maxAge - (Строка) дата истечения срока действия относительно текущего времени в миллисекундах
  • path - (Строка) путь для куки. По умолчанию /
  • value - (Строка) значение, используемое для куки

Чтобы удалить куки, установите для его value значение null.

Узел http запрос

Узел http запрос в Палитре
Узел http запрос на Холсте

Отправляет HTTP-запрос и возвращает ответ.

Принимает:

  • url строка – если ‘URL’ не установлен в узле, это необязательное свойство устанавливает URL запроса.
  • method строка – если ‘метод’ не установлен в узле, это необязательное свойство устанавливает HTTP-метод запроса. Должно быть GET, PUT, POST, PATCH или DELETE.
  • headers объект – устанавливает заголовки HTTP запроса.
  • cookies объект – если установлено, может использоваться для отправки куки с запросом.
  • payload – отправляется как тело запроса.
  • rejectUnauthorized – если установлено значение false, разрешает отправлять запросы на сайты https, которые используют самозаверенные сертификаты.
  • followRedirects – если установлено значение false, запрещает переадресацию (HTTP 301). По умолчанию true.
  • requestTimeout – если задано положительное число миллисекунд, будет переопределен глобально заданный параметр httpRequestTimeout.

Выводит:

  • payload строка | объект | буфер – тело ответа. Узел можно настроить так, чтобы он возвращал тело в виде строки, пытался проанализировать его как строку JSON или оставлял его в виде двоичного буфера.
  • statusCode число – код статуса ответа или код ошибки, если запрос не может быть выполнен.
  • headers объект – объект, содержащий заголовки ответа.
  • responseUrl строка – если при обработке запроса произошли перенаправления, это свойство является окончательным перенаправленным URL-адресом. В противном случае, URL исходного запроса.
  • responseCookies объект – если ответ содержит куки, это свойство является объектом пар имя/значение для каждого из них.
  • redirectList массив – если запрос был перенаправлен один или несколько раз, накопленная информация будет добавлена в это свойство. location - это следующий пункт назначения перенаправления. cookies - это куки, возвращаемые из источника перенаправления.

При настройке внутри узла свойство URL может содержать mustache-теги. Это позволяет построить URL-адрес, используя значения входящего сообщения. Например, если для URL-адреса задано значение example.com/{{{topic}}}, то автоматически будет вставлено значение msg.topic. Использование {{{...}}} предотвращает HTML-кодирование таких символов, как / & и т.д.

Узел может также автоматически кодировать msg.payload как параметры для GET-запроса. В этом случае sg.payload должен быть объектом.

к сведению

При работе через прокси-сервер следует либо установить стандартную переменную среды http_proxy=... и перезапустить Luxms Databoring, либо использовать конфигурацию прокси-сервера. Если была установлена конфигурация прокси, то она имеет приоритет над переменной среды.

Использование нескольких узлов HTTP-запросов
Чтобы использовать несколько таких узлов в одном потоке, нужно позаботиться о свойстве msg.headers. Первый узел установит это свойство с заголовками ответа. Затем следующий узел будет использовать эти заголовки для своего запроса - обычно это неправильный подход. Если свойство msg.headers остается неизменным между узлами, оно будет проигнорировано вторым узлом. Чтобы установить свои заголовки, сначала необходимо удалить msg.headers или сбросить это свойство до пустого объекта: {}.

Обработка куки

Свойство cookies, передаваемое узлу, должно быть объектом из пар имя/значение. Значением может быть либо строка для установки значения куки, либо это может быть объект с единственным свойством value.

Все куки, возвращаемые запросом, передаются обратно в свойстве responseCookies.

Обработка типов контента
Если msg.payload является объектом, узел автоматически установит тип содержимого запроса в application/json и закодирует тело соответствующим образом.

Чтобы закодировать запрос как данные формы, для msg.headers ["content-type"] должно быть установлено application/x-www-form-urlencoded.

Загрузка файла
Чтобы выполнить загрузку файла, для msg.headers ["content-type"] должно быть установлено значение multipart/form-data, а msg.payload переданный на узел должен быть объектом со следующей структурой:

{
"КЛЮЧ": {
"value": СОДЕРЖИМОЕ_ФАЙЛА,
"options": {
"filename": "ИМЯ_ФАЙЛА"
}
}
}

На местах КЛЮЧ, СОДЕРЖИМОЕ_ФАЙЛА и ИМЯ_ФАЙЛА должны быть установлены соответствующие значения.

Узел Веб-сокет (вход)

Узел Веб-сокет (вход) в Палитре
Узел Веб-сокет (вход) на Холсте

Входящий узел WebSocket.

По умолчанию данные, полученные из WebSocket, будут в msg.payload. Сокет можно настроить так, чтобы он ожидал правильно сформированную строку JSON. В этом случае он будет анализировать JSON и отправлять полученный объект как полное сообщение.

Узел Веб-сокет (выход)

Узел Веб-сокет (выход) в Палитре
Узел Веб-сокет (выход) на Холсте

Исходящий узел WebSocket.

По умолчанию msg.payload будет отправлено через WebSocket. Сокет может быть сконфигурирован для кодирования всего объекта msg в виде строки JSON и отправки его через WebSocket.

Если сообщение, поступающее на этот узел, было начато в потоке узлом Веб-сокет (вход), сообщение будет отправлено обратно клиенту, который запустил поток. В противном случае сообщение будет передано всем подключенным клиентам.

Если Вы хотите передать сообщение, которое началось с узла Веб-сокет (вход), всем подключенным клиентам, тогда вам нужно удалить свойство msg._session перед тем как передавать его этому узлу.

Узел tcp (вход)

Узел tcp (вход) в Палитре
Узел tcp (вход) на Холсте

Предоставляет выбор из нескольких входящих TCP-узлов. Можно либо подключаться к удаленному TCP-порту, либо принимать входящие подключения.

к сведению

В некоторых системах вам могут потребоваться права root или администратора для доступа к портам ниже 1024.

Узел tcp (выход)

Узел tcp (выход) в Палитре
Узел tcp (выход) на Холсте

Предоставляет выбор из нескольких исходящих TCP-узлов. Может подключаться к удаленному TCP-порту, принимать входящие подключения или отвечать на сообщения, полученные от узла tcp (вход).

Отправляются только данные msg.payload.

Если msg.payload является строкой, содержащей Base64-кодировку двоичных данных, опция Base64-декодирования приведет к ее преобразованию обратно в двоичный файл перед отправкой.

Если msg._session отсутствует, данные отправляется всем подключенным клиентам.

к сведению

В некоторых системах вам могут потребоваться права root или администратора для доступа к портам ниже 1024.

Узел tcp (запрос)

Узел tcp (запрос) в Палитре
Узел tcp (запрос) на Холсте

Узел TCP-запроса - отправляет msg.payload на tcp-порт сервера и ожидает ответа.

Подключается, отправляет запрос и читает ответ. Он может либо подсчитать количество возвращенных символов в фиксированный буфер, сопоставить указанный символ перед возвратом, дождаться фиксированного времени ожидания от первого ответа и затем вернуться, сидеть и дожидаться данных, или отправить, а затем немедленно закрыть соединение, не дожидаясь ответа.

Ответ будет возвращен в msg.payload в виде буфера, поэтому вам может понадобиться применить к нему .toString(), если нужно преобразование в строку.

Если вы оставите tcp-хост или порт пустыми, они должны быть установлены с помощью свойств msg.host и msg.port в каждом сообщении, отправляемом узлу.

Узел udp (вход)

Узел udp (вход) в Палитре
Узел udp (вход) на Холсте

Входящий UDP-узел, который создает msg.payload, содержащий буфер, строку или base64-строку. Поддерживает многоадресную рассылку.

Он также предоставляет msg.ip и msg.port для IP-адреса и порта, с которого было получено сообщение.

к сведению

В некоторых системах вам могут потребоваться права root или администратора для доступа к портам ниже 1024 и/или широковещательной рассылки.

Узел udp (выход)

Узел udp (выход) в Палитре
Узел udp (выход) на Холсте

Этот узел отправляет msg.payload на назначенный UDP-хост и порт. Поддерживает многоадресную рассылку.

Вы также можете использовать msg.ip и msg.port для установки значений пункта назначения, но статически настроенные значения имеют приоритет.

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

к сведению

В некоторых системах вам могут потребоваться права root или администратора для доступа к портам ниже 1024 и/или широковещательной рассылки.