Tag: stream

Node.js HTTP模块:Response + Request

我刚开始看一些节点教程,我想帮助理解从http.createServer()获得的响应和请求stream。 响应和请求是stream,所以这意味着比Node.js发送和接收数据块? 例如,如果我打电话 res.write("test1"); res.write("test2"); res.end(); 当我调用end()时它是否只写这两个东西,或者当它调用write()的时候,它会刷新到stream并发送给发出请求的客户端? 另一个详细说明我的问题的例子是,如果我有一个txt文件与大量的明文数据,然后我设置一个读取stream,该数据从该文件pipe道数据的res对象将pipe它的数据块或一旦一切在缓冲区中。 我想我的问题也适用于请求对象。 例如,请求的主体是按照数据包的formsbuild立起来的,并且是stream式传输到服务器的,还是一次发送的,而节点只是select让我们使用stream来访问它。 非常感谢!

nodejspipe道https响应request.post和写入文件

我正在做HTTP代理程序,检查HTTP URL,如果它是下载链接(内容types:八位字节stream),我会得到响应,并通过使用request.post和其他计算机下载文件与其他计算机响应中继该响应由http代理给出。 假设networking代理计算机是A.并且它是A. 192.168.5.253的代码的一部分 if(contentType && (contentType== "application/octet-stream" || contentType == "application/gzip")){ console.log("remoteRes##app",remoteRes); let filepath = req.url.split('/'); let FileName = getFilename(remoteRes, filepath); let writeStream = fs.createWriteStream(FileName); /*remoteRes is octect-stream response. I can get file buffer If I use remoteRes.on(data, chunk => {…})*/ remoteRes.pipe(writeStream); //It works but I want to send file buffer to B without […]

节点 – 如何写audio文件

我正在制作一个logging用户在说什么的应用程序,并将其保存到一个文件中。 为了从麦克风获得声音,我使用节点麦克风包。 我的应用程序目前能够从麦克风获得声音。 但是,当我尝试写入audio文件的stream,并播放它,我得到以下错误。 Windows Media Player无法播放该文件。 播放器可能不支持文件types,也可能不支持用于压缩文件的编解码器。 有谁知道如何写audio节点中的文件? var fs = require('fs'); const { Writable } = require('stream'); var writeStream = fs.createWriteStream('./output.wav'); const outStream = new Writable({ write(chunk, encoding, callback) { console.log(chunk); writeStream.write(chunk); callback(); } }); let Mic = require('node-microphone'); let mic = new Mic(); let micStream = mic.startRecording(); micStream.pipe( outStream ); mic.on('info', (info) […]

NodeJS:无法将stream/缓冲区转换为base64string

我需要创buildbase64string,我需要发送到第三方API。 我有stream和缓冲区。 表单stream我能够创build一个图像,所以没有办法stream被破坏。 这是两个variables: var newJpeg = new Buffer(newData, "binary"); var fs = require('fs'); let Duplex = require('stream').Duplex; let _updatedFileStream = new Duplex(); _updatedFileStream.push(newJpeg); _updatedFileStream.push(null); 无论我尝试什么,我都无法用base64string转换它们。 _updatedFileStream.toString('base64'); Buffer(newJpeg, 'base64'); Buffer(newData, 'base64'); 以上都不是。 有时我会得到Uint8Array [arraySize]或者Gibberishstring。 我究竟做错了什么?

超时function节点?

就我的理解而言,这是一个stream因此它不断向Oracle数据库传输值。 我想知道如果我可以做一个超时function,等待大约3秒后再次发送。 var net = require('net'); var fs = require('fs'); var oracledb = require('oracledb'); var dbConfig = require('./dbconfig.js'); var client = new net.Socket(); client.connect(8080, "192.168.0.7"); console.log("Client most likely connected…"); oracledb.getConnection( { user : dbConfig.user, password : dbConfig.password, connectString : dbConfig.connectString }, function(err, connection) { if (err) { console.error(err.message); return; } client.on('data', function (data) { var […]

将stream响应转换为HTTP响应

我有一个API尝试向一个API发送一个HTTP请求,然后将这个图像传回给我,或者等待图像传输给我,然后发送给我这一切。 我正在使用Express和请求承诺。 这是我的代码的缩短版本。 const express = require('express'); const router = express.Router(); const request = require('request-promise'); const imgFunc = async () => { try { const response = await request.get({ method: 'GET', uri: `http://localhost:8080`, }); return response; } catch(err) { console.log(err); } }; router.get('/', async function(req, res, next) { try { const response = await imgFunc(); […]

将数据从variablesstream到PUT请求

我一直在做的是做一个GET请求,然后操纵JSON数据存储在一个variables,然后发出一个PUT请求。 似乎无法find这方面的文件。 也许我正在考虑这个错误。 一旦我有variables,我想要做下面的事情。 我将GET请求中的所有数据都保存到outputV3.json文件中。 var outputJson = fs.readFileSync("outputV3.JSON"); outputJson = JSON.parse(outputJson); (function () { for (let i = 0; i < outputJson.objects.length; i++) { let postId = outputJson.objects[i].id.toString(); let newSlug = outputJson.objects[i].slug.replace("blog/", ""); let urlToPut = "https://api.hubapi.com/content/api/v2/blog-posts?limit=1000&hapikey=" + process.env.HAPIKEY; urlToPut = urlToPut.replace("blogPostId", postId); let put_data = JSON.stringify({ "slug": newSlug }); put_data.put(urlToPut); } });

函数types的stream联合

我正在为JS代码库添加streamtypes,并遇到了一些无types的代码,如下所示: const doSomething(callback, type) { if (type === 'one') { const bool = callback(42) } else if (type === 'two') { const str = callback(4, 2) } } 该函数采用具有两个签名中的一个的callback,以及一个types参数,该types参数是指示callback使用哪个签名的string。 在我第一次尝试添加stream程时,我最终得到了以下结果: /* @flow */ type Callback1 = (any) => bool type Callback2 = (any, any) => string type WhichFunc = 'one' | 'two' type Func = […]

将转换stream应用于写入stream而不控制读取stream?

我有一个函数,期望我正在提供以下stream的写入stream: const logStream = fs.createWriteStream('./log.txt') fn(logStream) fn由第三方模块提供,所以我不控制它的实现。 在内部,我知道fn最终这样做: // super simplified fn (logStream) { // … stream.pipe(logStream, { end: true }) // … } 我的问题是,我知道读取stream的stream包含ANSI转义代码,我不希望被输出到我的log.txt 。 快速谷歌search后,我发现了chalk/strip-ansi-stream ,这是一个转换streamdevise来做到这一点。 所以,作为节点stream新手,我决定尝试修改我的代码: const stripAnsiStream = require('strip-ansi-stream') const logStream = fs.createWriteStream('./log.txt') fn(stripAnsiStream().pipe(logStream)) …这不起作用:我的日志文件仍然包含ANSI转义代码的内容 。 我认为这是因为,而不是像创build一个链 a.pipe(b).pipe(c) 我已经完成了 a.pipe(b.pipe(c)) 如何将这个转换stream应用于我的写入stream而不控制提供读取stream的pipe道链的开始?

NodeJs:如何pipe两个stream到一个产生的进程stdin(即ffmpeg)导致一个单一的输出

为了两个PCMaudio转换成MP3我使用以下内容: function spawnFfmpeg() { var args = [ '-f', 's16le', '-ar', '48000', '-ac', '1', '-i', 'pipe:0', '-acodec', 'libmp3lame', '-f', 'mp3', 'pipe:1' ]; var ffmpeg = spawn('ffmpeg', args); console.log('Spawning ffmpeg ' + args.join(' ')); ffmpeg.on('exit', function (code) { console.log('FFMPEG child process exited with code ' + code); }); ffmpeg.stderr.on('data', function (data) { console.log('Incoming data: ' + […]