Node-RED 흐름에서 자작 노드로 이진 데이터를 전달하는 방법
바이너리 데이터로 상호 작용할 때 Buffer 클래스를 지원합시다. 그러면 흐름과 Node.js에서 바이너리 배열을 교환할 수 있습니다.
문제 사건
Node-RED 흐름에서 Uint8Array 유형의 바이너리 데이터를 생성하여 자체 노드에 전달하려고했지만 제대로 작동하지 않았습니다.
브라우저의 function 노드 내의 코드
이 결과를 자체 노드에 입력합니다.
let data = new Uint8Array([1,2,3,4,5]);
return {payload: data};
자체 제작 노드 내
node.on('input',(msg) => {
let payload = new Uint8Array([0,1,2,3,4,5]);
console.log(msg.payload);
console.log(payload);
});
결과
자작 노드 내에서 두 개의 페이로드를 출력해 보면 다음과 같이됩니다.
Function 노드에서 선언한 Uint8Array는 JSON, 자작 노드 내에서 선언한 Uint8Array는 배열이되어 분명히 다른 것 같습니다 ...
정답
Buffer를 사용할 때의 결과
브라우저의 function 노드 내의 코드
let buffer = new Buffer([0,1,2,3,4,5]);
let uint8array = new Uint8Array([0,1,2,3,4,5]);
return {buffer: buffer, uint8array: uint8array};
자체 제작 노드 내
node.on('input',(msg) => {
console.log({
buffer: (msg.buffer instanceof Buffer),
uint8array: (msg.uint8array instanceof Uint8Array)
});
console.log({binay: msg.binary});
console.log({uint8array: msg.uint8array});
});
정답 결과
이와 같이 Buffer형을 사용한 분은 성공했습니다.
Node.js의 Uint8Array를 사용할 수 있기 때문에 instanceof에서 형식을 확인하면 올바르게 결정할 수 있음을 알았습니다.
Reference
이 문제에 관하여(Node-RED 흐름에서 자작 노드로 이진 데이터를 전달하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/NaotakaSaito/items/b55c8cc98f96262c0dc5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)