javascript - readstream - Convertir un Buffer en un ReadableStream en nodejs
readstream nodejs (3)
Puede crear un ReadableStream usando Buffers de Secuencia de Node como este:
// 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");
La frecuencia no puede ser 0 por lo que esto introducirá un cierto retraso.
Soy bastante nuevo en Buffers y en ReadableStreams, así que tal vez esta es una pregunta estúpida. Tengo una biblioteca que toma como entrada un ReadableStream, pero mi entrada es solo una imagen de formato base64. Podría convertir los datos que tengo en un Buffer así:
var img = new Buffer(img_string, ''base64'');
Pero no tengo idea de cómo convertirlo a un ReadableStream o convertir el Buffer que obtuve en un ReadableStream.
¿Hay alguna manera de hacer esto o estoy tratando de lograr lo imposible?
Gracias.
algo como esto...
import { Readable } from ''stream''
const buffer = new Buffer(img_string, ''base64'')
const readable = new Readable()
readable._read = function () {} // _read is required but you can noop it
readable.push(buffer)
readable.pipe(consumer) // consume the stream
En el curso general, la función _read
una secuencia legible debe recopilar datos de la fuente subyacente y push
incrementalmente para garantizar que no se recolecte una gran fuente en la memoria antes de que sea necesaria.
En este caso, aunque ya tenga la fuente en la memoria, entonces _read
no es necesario.
Al presionar todo el búfer simplemente lo envuelve en la API legible.
Nodo Stream Buffer está obviamente diseñado para usarse en pruebas; la imposibilidad de evitar un retraso lo convierte en una opción deficiente para el uso de producción.
Gabriel Llamas sugiere streamifier en esta respuesta: ¿Cómo envolver un buffer como una secuencia legible de lectura2?