Node-RED:Библиотеки/node-red/Split: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 5: | Строка 5: | ||
=Нода «Split»= | =Нода «Split»= | ||
[[Файл:Nodered node split.PNG|center]] | |||
Дробит сообщение на серию сообщений. | Дробит сообщение на серию сообщений. |
Версия от 21:44, 6 июня 2019
Нода «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», если она будет работать в автоматическом режиме.