Node.js에서 버퍼를 ReadableStream으로 변환
나는 Buffers 및 ReadableStreams에 상당히 익숙하지 않으므로 이것은 어리석은 질문 일 수 있습니다. 입력으로 취하는 라이브러리가 ReadableStream
있지만 내 입력은 base64 형식 이미지입니다. 내가 가진 데이터를 다음 Buffer
과 같이 변환 할 수 있습니다 .
var img = new Buffer(img_string, 'base64');
그러나 나는 그것을 a ReadableStream
로 변환하거나 Buffer
내가 얻은 ReadableStream
.
이것을 할 방법이 있습니까 아니면 불가능을 달성하려고 노력하고 있습니까?
감사.
다음 과 같이 노드 스트림 버퍼를 사용하여 ReadableStream을 만들 수 있습니다 .
// Initialize stream
var myReadableStreamBuffer = new streamBuffers.ReadableStreamBuffer({
frequency: 10, // in milliseconds.
chunkSize: 2048 // in bytes.
});
// With a buffer
myReadableStreamBuffer.put(aBuffer);
// Or with a string
myReadableStreamBuffer.put("A String", "utf8");
주파수는 0이 될 수 없으므로 특정 지연이 발생합니다.
Node Stream Buffer 는 분명히 테스트 용으로 설계되었습니다. 지연을 피할 수 없기 때문에 프로덕션 용도로 적합하지 않습니다.
Gabriel Llamas 는 이 답변에서 streamifier 를 제안 합니다. 버퍼를 stream2 Readable 스트림으로 래핑하는 방법?
이 같은...
import { Readable } from 'stream'
const buffer = new Buffer(img_string, 'base64')
const readable = new Readable()
readable._read = () => {} // _read is required but you can noop it
readable.push(buffer)
readable.push(null)
readable.pipe(consumer) // consume the stream
일반적인 과정에서 읽을 수있는 스트림의 _read
함수는 기본 소스에서 데이터를 수집해야하며 push
필요하기 전에 거대한 소스를 메모리로 수집하지 않도록 점진적으로 보장해야합니다.
이 경우 이미 메모리에 소스가 있어도 _read
필요하지 않습니다.
전체 버퍼를 푸시하면 읽기 가능한 스트림 API로 래핑됩니다.
다음은 streamifier 모듈을 사용하는 간단한 솔루션 입니다.
const streamifier = require('streamifier');
streamifier.createReadStream(new Buffer ([97, 98, 99])).pipe(process.stdout);
Strings, Buffer 및 Object를 인수로 사용할 수 있습니다.
단일 파일에 대해 전체 npm lib를 추가 할 필요가 없습니다. 나는 그것을 typescript로 리팩토링했습니다.
import { Readable, ReadableOptions } from "stream";
export class MultiStream extends Readable {
_object: any;
constructor(object: any, options: ReadableOptions) {
super(object instanceof Buffer || typeof object === "string" ? options : { objectMode: true });
this._object = object;
}
_read = () => {
this.push(this._object);
this._object = null;
};
}
based on node-streamifier (the best option as said above).
참고URL : https://stackoverflow.com/questions/13230487/converting-a-buffer-into-a-readablestream-in-node-js
'Development Tip' 카테고리의 다른 글
Java의 System.in에서 읽는 가장 빠른 방법은 무엇입니까? (0) | 2020.12.08 |
---|---|
C # 컴파일러가 IEnumerable 간의 명시 적 캐스트를 허용하는 이유 (0) | 2020.12.08 |
사용자 수준 스레드와 커널 지원 스레드의 차이점은 무엇입니까? (0) | 2020.12.08 |
부동 소수점 값을 변환 할 때 std :: to_string의 정밀도 설정 (0) | 2020.12.08 |
파이썬에서 목록을 jsonarray로 변환하는 방법 (0) | 2020.12.08 |