Tag: stream

如何结束对npm oauth.get请求到TwitterstreamAPI的stream式响应?

如何停止对此获取请求的stream式响应? 起初,我使用npm twitter,在那里你有一个.destroy()方法来杀死stream,但是想更好地理解这个过程(node newb在这里),所以只使用npm oauth,然后是核心节点代码。 我无法在oauth的文档中find与twitter的.destroy()类似的方法。 stream = oauth.get('https://stream.twitter.com/1.1/statuses/filter.json?&track=meaningoflife', process.env.TWITTER_ACCESS_TOKEN_KEY, process.env.TWITTER_ACCESS_TOKEN_SECRET); stream.end(); stream.addListener('response', function(twitResponse){ twitResponse.addListener('data', function(data){ //consume stream here }); }); 这工作正常,stream如预期地进来。 closures它是唯一的问题。 非常感谢!

无法在控制台中看到MediaStream属性值

我完全是新的WebRTC和Node.js我试图构build示例webRTC应用程序使用教程http://www.tutorialspoint.com/webrtc/webrtc_media_stream_apis.htm我已经遵循完全相同的步骤,除了我已经创build了自己的Nodejs服务器使用来自同一站点的nodejs教程。 正如在webrtc教程中所提到的,我无法在控制台中看到MediaStream的属性值。 在我的情况下,它完全空白。 我做错了什么 我的文件正在运行http://127.0.0.1:8081/index.html ,我能够看到我的本地video。

为什么我可以推入一个可读的stream?

我正在使用一段类似的代码,直到我发现了'setEncoding'方法。 在重构代码时,这个问题出现在我的面前。 readable.push(chunk, 'base64') readable.push(null) readable.pipe(res) 是不是推一个写数据的forms? 我不应该无法将任何数据写入可读stream吗? 我知道每个数据都需要被写入(否则它将是空的),并且在某个时候被读取(或者变成无用的),但是我认为Node会从我们这里抽象出来。 有人可以帮我解决这个问题吗? 谢谢

NodeJsstreampipe道是对称的吗?

我正在构build一个服务器,将文件从端点A传输到端点B. 我想知道如果NodeJsstreampipe是对称的? 如果我这样做: request.get(A).pipe(request.put(B)); ,它的上传速度和下载一样快吗? 我问这个问题,因为我的服务器有一个不对称的连接(它下载比上传更快),我尽量避免内存消耗。

'如何高效地通过node.js mongodb驱动程序stream大型json文档?

我正在写一个node.js应用程序,通过mongo node.js驱动程序查询到mongodb数据库。 我想要路由到一个大json文档呈现的链接,但是,我想为了性能方面的考虑而stream式传输文档。 代码如下: var express = require("express"), app = express(), MongoClient = require("mongodb").MongoClient; MongoClient.connect("mongodb://localhost:27017/database", function(err,db) { var query = db.collection("manzanas").find({ "_id": "query" }) .project({ "_id":0 }); app.get("/link", function(req,res) { query.stream().on("data", function(d) { res.json(d); }); query.stream().on("end", function() { console.log("done"); res.end(); }); }); }); app.listen(8080, function() { console.log("server is on!"); }); 问题是,我第一次尝试访问链接一切都按预期工作,但是当我尝试刷新页面或从另一个选项卡或浏览器访问路由的JSON文档不呈现,而页面试图刷新时虽然互联网连接非常慢, 并最终没有显示。 我不知道如何解决这个问题,如果我不stream式处理文档,只是显示它,但是我没有遇到任何问题,但是我想知道如何使它与stream一起工作。 为了使其再次运行,我必须完全退出node.js进程,但这不是生产模式场景的选项。 我怎样才能做到这一点,什么是最好的方法? […]

Webshot到谷歌驱动器,而不使用缓冲区或stream存储中间文件?

TL;博士 我目前正尝试使用网页截图获取屏幕截图,并将其上传到Google云端硬盘, 而不 会将 文件保存到文件系统作为此过程中的中间步骤。 任何代码 – 无论采用哪种方式 – 都可以让我做到这一点,是最受欢迎的! 我试过了 我能够通过从webshot保存文件然后将该file upload到Google Drive来本地运行系统,但是在我使用的服务器环境(Elastic Beanstalk)上这是不可能的,我想避免这种混乱。 Webshot允许stream式传输屏幕截图。 这里是他们的示例代码: var webshot = require('webshot'); var fs = require('fs'); var renderStream = webshot('google.com'); var file = fs.createWriteStream('google.png', {encoding: 'binary'}); renderStream.on('data', function(data) { file.write(data.toString('binary'), 'binary'); }); 但是,这似乎达到了只是写入文件相同的目的。 Google Drive,在他们的google-api-nodejs-client (我使用)允许将主体设置为可读stream。 这里是他们的示例代码: var fs = require('fs'); var drive = google.drive({ version: […]

NodeJSstream超过了堆

我正在尝试从〜400mb csv文件中按摩一些数据,并将其保存到数据库中进行本地查询。 这是免费提供的ip2location lite数据库,我试图导入它的数据库是embedded式nedb 。 require('dotenv').load() const fs = require('fs') const csv = require('csv-parse') const es = require('event-stream') const Datastore = require('nedb') const BatchStream = require('batch-stream') const db = new Datastore({ filename: process.env.DB_PATH, autoload: true }) const debug = require('debug')('setup') function massage ([ipLo, ipHi, cc, country, area, city, lat, lng]) { return { ipLo, ipHi, […]

当通过es.map()和JSONStream.stringify()将JSONStream.parsed()数据pipe道传输到文件stream时节点堆耗尽

我试图通过JSONStream.parse()将inputstream(通过巨大的GeoJSON文件创build)分stream成对象,然后通过event-stream.map()来允许我转换对象,然后通过JSONStream .stringify()创build一个string,最后写入一个可写的输出stream。 随着进程的运行,我可以看到节点的内存占用不断增长,直到最终耗尽堆。 以下是重现问题的最简单的脚本(test.js): const fs = require("fs") const es = require("event-stream") const js = require("JSONStream") out = fs.createWriteStream("/dev/null") process.stdin .pipe(js.parse("features.*")) .pipe(es.map( function(data, cb) { cb(null, data); return; } )) .pipe(js.stringify("{\n\"type\": \"FeatureCollection\", \"features\": [\n\t", ",\n\t", "\n]\n}")) .pipe(out) 一个小小的bash脚本(barf.sh)将无尽的JSONstream传递给节点的process.stdin,这将导致节点的堆逐渐增长: #!/bin/bash echo '{"type":"FeatureCollection","features":[' while : do echo '{"type":"Feature","properties":{"name":"A Street"}, "geometry":{"type":"LineString"} },' done 通过这样运行它: barf.sh | node test.js […]

循环二进制Float64Array文件 – NodeJS

我有100个CSV文件,每个约50.000.000行,每个包含3个单元格。 每行需要触发一个事件来做一些计算。 使用npm read-line lib,通过pipe道读取CSV,我可以每秒处理大约1000000个周期(1节点线程)。 但是这个过程做了很多步骤,只是为了得到一些数字 打开.csv文件stream 将每个块串联起来 在块中search新行\ n 将该行分割成一个数组(3个单元格) parseFloat每个单元格 所以要parsing它们甚至更快,我虽然将csv文件转换为二进制文件可以帮助。 所以我创build了一个二进制Float64Array缓冲区文件,因为单元格中的所有值都是浮点数。 let counter = 0 ;; rows.forEach(function (row) { row.forEach(function(cell) { buffer.writeDoubleLE(cell, counter++ * Float64Array.BYTES_PER_ELEMENT); }) }); writeStream.write(buffer) writeStream.end() 那么它只需要做这个步骤 打开.bin文件stream 将每个stream缓冲区块(chunk = 3个单元格)转换为ArrayBuffer到Array64Float fs.createReadStream(fileName, {highWaterMark: 24}) //.pause() .on('data', chunk => { //this._stream.pause(); this._bufferOffset = 0; this.emit('tick', new Float64Array(chunk.buffer, chunk.byteOffset, chunk.byteLength / […]

NodeJSstreamReadableState

NodeJS文档提到了stream动/非stream动模式(在ReadableState )。 以下摘录进一步解释了一次可读stream可能处于的不同状态。 ( https://nodejs.org/api/stream.html#stream_three_states ) Specifically, at any given point in time, every Readable is in one of three possible states: readable._readableState.flowing = null readable._readableState.flowing = false readable._readableState.flowing = true 我将不胜感激提供更多解释的任何参考。 我特别好奇每个州的特点/行为; 以及哪些行为触发了不同国家之间的转换? 此外。 如果我没有错,在stream动模式下:stream主动生成数据,而在非stream动模式下:直到r.read(size)之前,stream不会生成任何数据。 非stream动模式和暂停模式有什么区别? 当_readableState.flowing == null时, r.isPaused()为false。