Tag: stream

通过节点stream式传输连续的HTTP响应

我试图作为客户端和使用NodeJS服务器的IP摄像机之间的代理。 当我请求来自相机的实时stream时,它响应 HTTP/1.0 200 OK Content-Type: Application/octet-stream 随后是连续的数据stream。 如果我在Chrome中打开相机stream,它会启动一个永不停止的下载,并启动一个连续的响应。 Node似乎是缓冲来自摄像机的响应,并且每次都通过它的HTTPparsing器parsing它。 这是第一次正常工作,因为它有正确的标题,但它的错误与第二个数据缓冲区 HPE_INVALID_HEADER_TOKEN 有人可以请帮忙解释为什么发生这种情况? 这是一个连续的数据stream,为什么它试图parsing第二个缓冲区的HTTP头? 我不确定是否有我缺less的选项,或者我的相机没有正确遵循HTTP规范。 编辑:示例代码 const options = { family: 4, headers: { Authorization: 'Basic ' + base64EncodedAuth, }, host: '192.168.1.131', method: 'GET', path: '/cgi-bin/realmonitor.cgi?action=getStream&channel=1&subtype=0', port: 80, protocol:'http:', }; const req = http.request(options, (res) => { console.log(`STATUS: ${res.statusCode}`); console.log(`HEADERS: ${JSON.stringify(res.headers)}`); res.on('data', (chunk) => { […]

如何从一个stream中读取并一次写入多个?

假设我有一个readablestream,例如request(URL) 。 我想通过fs.createWriteStream()将请求的响应写在磁盘上, 但同时我想通过crypto.createHash()stream来计算下载数据的校验和。 readable -+-> calc checksum | +-> write to disk 我想在飞行中完成,而不是在内存中缓冲整个响应。 看来我可以on('data')钩子on('data')使用oldschool来实现它。 下面的伪代码: const hashStream = crypto.createHash('sha256'); hashStream.on('error', cleanup); const dst = fs.createWriteStream('…'); dst.on('error', cleanup); request(…).on('data', (chunk) => { hashStream.write(chunk); dst.write(chunk); }).on('end', () => { hashStream.end(); const checksum = hashStream.read(); if (checksum != '…') { cleanup(); } else { dst.end(); } }).on('error', […]

来自readStream的Nodejs图像被显示,但连接仍然打开一分钟左右

我正在尝试创build个人资料图片上传function,并且被卡在检索部分。 图像以块forms下载,一旦出现某种原因,networking标签中的图像旁边还有一个旋转的图标持续60秒,就像图像被下载并渲染,但仍然需要大约一分钟或更长的时间因为它完成在浏览器的networking选项卡加载,如果我试图同时上传另一个图像,它不会得到渲染,直到先前上传的图像通过一分钟左右,有人可以帮我弄清楚请。 const storage = require('@google-cloud/storage'); const gcs = storage({ projectId: 'my_project_id', keyFilename: 'keys.json' }); const bucketName = 'my-profile-photos'; const bucket = gcs.bucket(bucketName); const retrieveFromGcs = (req, res, next) => { const stream = bucket.file(req.params.name).createReadStream(); res.writeHead(200, {'Content-Type': 'image/jpg' }); stream.on('data', (data) => { console.log('hit stream on data'); res.write(data); }); stream.on('error', (err) => { console.log('hit error'); […]

如何在vo.js循环中产生多重承诺?

基于这个例子 – vo / examples / 9-pipeline-composition.js ,我将如何return yield for this for循环的每个迭代的承诺? 目前循环运行一次,并产生一个单一的承诺。 function * get (urls) { for (var i = urls.length – 1; i >= 0; i–) { console.log(urls[i]) return yield http.get(urls[i]) } } function status (res, params) { return res.status } let scrape = vo(get(['http://standupjack.com', 'https://google.com']), status) vo([ scrape ]) .then(out => […]

NodeJS获取stream文件下载的字节数

在这段代码中,我从一个urlstream中传输一个文件并将其保存到一个文件中。 有没有办法通过pipe道来计算pipe道字节数呢? (这会告诉我的文件大小。) request.stream(url) .pipe(outputFile) 有没有一些图书馆可以通过下载来完成这个工作,或者我自己做一个简单的方法呢?

Tensorflow服务grpc客户端错误12

我目前正在尝试通过张量服务服务一个简单的模型,然后我想通过使用node.js通过gRRC调用它。 我觉得学习/理解这个最简单的方法就是把它分解成最简单的模型。 请原谅这个命名,因为我最初是用一个Mnist教程开始做的,但是我也没有成功。 所以这个名字还是说mnist,但这只是一个简单的计算实现。 我使用下面的代码创build和导出模型: – 简单模型 – x = tf.placeholder(tf.float32, shape=(None)) y = tf.placeholder(tf.float32, shape=(None)) three = tf.Variable(3, dtype=tf.float32) z = tf.scalar_mul(three, x) + y – 出口 – model_version = 1 path = os.path.join("mnist_test", str(model_version)) builder = tf.python.saved_model.builder.SavedModelBuilder(path) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) builder.add_meta_graph_and_variables( sess, [tf.python.saved_model.tag_constants.SERVING], signature_def_map = { "test_mnist_model": tf.saved_model.signature_def_utils.predict_signature_def( inputs={"xval": x, "yval":y}, […]

Node.js:pipe道文件时错误ECONNRESET

我有这个错误,而“pipe道”节点中的文件: events.js:160 throw er; // Unhandled 'error' event ^ Error: read ECONNRESET at exports._errnoException (util.js:1022:11) at Pipe.onread (net.js:569:26) 这是我的代码: var json_file = fs.createWriteStream(jsonFile), processes = 0, read_ended_flag = false, converter = new Converter(params); let read_csv_file = fs.createReadStream(csvFilePath); // For each csv line, we get a json doc converter.on('record_parsed', jsonObj => { processes++; json_file.write(JSON.stringify(jsonObj) + '\n', […]

如何获得一个NodeJS转换stream为每个input块发出多个logging?

我正在写一个转换stream,接受XML的传入stream,并发出一个JS对象的子集。 <item> <name>some name</name> <files> <file path='path/to/file'/> <file path='path/to//other/file'/> </files> </item> 需要写两个项目对象 { name: 'some name', file: 'path/to/file } 和 { name: 'some name', file: 'path/to/other/file } 因为它将被传送到一个CSV作家。 代码看起来像 import fs from 'fs' import expat from 'node-expat' import { Transform } from 'stream' const xParser = (filePath) => { const stream = fs.createReadStream(filePath) const parser […]

Node.JS和Java PUB / SUB

我试图build立一个应用程序,通信将由一个node.js服务器完成。 该节点服务器将接收来自其他对等方的消息。 我的node.js代码是: var zmq = require('zmq'), socket = zmq.socket('sub'); socket.bind('tcp://127.0.0.1:5556', function (err) { if (err) { console.log('Error: ', err); throw err; } socket.on('message', function (envelope, blank, data) { console.log(arguments); }); socket.on('error', function (err) { console.log(arguments); }); }); 在系统的其他部分,有一个java服务器应该为这个服务器发送消息。 这是我的java代码: Context context = ZMQ.context(1); Socket publisher = context.socket(ZMQ.PUB); publisher.connect("tcp://127.0.0.1:5556"); for (int request_nbr = 0; request_nbr […]

节点事件发射器

我是新来的节点,我正在研究事件发射器,我创build了一个演示程序 var eventEmitter = new event.EventEmitter(); var fs = require("fs"); var data = ''; var read = fs.createReadStream("demo.txt"); read.setEncoding('UTF8'); read.on('data', function(resp) { console.log(resp); }); data='some data'; var writeStream = fs.createWriteStream("demo.txt"); writeStream.write(data,'UTF8'); writeStream.end(); writeStream.on('finish',function(){ console.log("finish"); }); 所以输出是“完成”,但如果我在写入stream之后写入读取stream,输出是“完成一些数据”,那么为什么读取stream如果我先把它输出就不会产生输出。 PS:我已经在文件中有数据