Node-RED:Библиотеки/node-red/Split

Материал из Онлайн справочника
Версия от 18:30, 21 мая 2019; Myagkij (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Нода «Split»

Дробит сообщение на серию сообщений.

Свойства присылаемого сообщения

  • Свойство «payload» (объект/строка/массив/буфер) – то, как будет вести себя нода «Split», зависит от типа данных, находящегося в этом свойстве:
    • Строка/буфер – нода будет дробить сообщение при помощи специального символа (по умолчанию это «\n»). Получившиеся сообщения будут преобразованы либо в строки, либо в буферы, либо в сообщения фиксированной длины
    • Массив – сообщение будет раздроблено либо на отдельные элементы массива, либо на массивы фиксированного размера
    • Объект – сообщения будут создаваться из пар «ключ/значение» объекта (одна пара – одно сообщение)

Свойства отправляемого сообщения

  • Свойство «parts» (объект) – это свойство содержит информацию о том, как это сообщение создавалось на базе исходного сообщения. Если передать его ноде «Join», она снова сможет собрать раздробленное сообщение воедино. У этого свойства есть несколько подсвойств:
    • «id» – идентификатор группы сообщений
    • «index» – позиция сообщения в группе
    • «count» – общее количество сообщений в группе (если известно). Более подробно читайте ниже в разделе «Потоковый режим».
    • «type» – тип сообщения (строка/массив/объект/буфер)
    • «ch» – данные, которые использовались, чтобы разбить исходное сообщение на несколько сообщений. Используется для строки или буфера
    • «key» – ключ из пары «ключ/значение», из которой было сделано это сообщение. Ноду «Split» можно также настроить, чтобы она копировала это значение в другие свойства сообщения (вроде «msg.topic»).

Используется для строки или буфера

    • «len» – длина каждого сообщения, если исходное сообщение делилось на сообщения фиксированной длины

Подробное описание

Эта нода упрощает создание потоков, где вам нужно сначала разбить сообщение на несколько частей, выполнить с этими частями какие-то типовые действия, а затем при помощи ноды «Join» снова объединить все эти сообщения в одно сообщение.

Чтобы отслеживать разные фрагменты исходного сообщения, нода «Split» использует свойство «msg.parts».

Потоковый режим

Ноду «Split» также можно использовать, чтобы восстановить целостность потока сообщений. Например, представьте, что у вас есть последовательное устройство, отправляющее команды, которые заканчиваются символом новой строки, и оно вдруг отправляет сообщение, в конце которого находится не целая команда, а лишь ее часть. Но, если в ноде «Split» включен «потоковый режим» (чтобы включить его, поставьте галочку рядом с пунктом «Handle as a stream of messages» в меню редактирования ноды «Split»), она по-прежнему будет дробить это сообщение и отправлять дальше полные команды, но, увидев в конце сообщения неполную команду, нода «Split» сохранит его, а затем подставит в начало следующего сообщения.

Работая в этом режиме, нода «Split» не будет задавать свойство «msg.parts.count», т.к. не знает, как много сообщений ожидается в этом потоке. Это значит, что эти сообщения потом нельзя будет объединить с помощью ноды «Join», если она будет работать в автоматическом режиме.

См.также

Внешние ссылки