Tag: stream

实现缓冲变换stream

我正在试图用新的Node.jsstreamAPI实现一个stream缓冲一定数量的数据。 当这个数据stream被传送到另一个数据stream,或者某些事件消耗了readable事件时,这个数据stream应该刷新它的缓冲区,然后直接传递。 捕获的是,这个stream将被传送到许多其他stream中,并且当每个目标stream被附加时, 即使缓冲区已经被刷新到另一个stream ,缓冲区也必须被刷新。 例如: BufferStream实现stream.Transform ,并保留512KB的内部环形缓冲区 ReadableStreamA被传递给BufferStream一个实例 BufferStream写入其环形缓冲区,从ReadableStreamA读取数据(数据丢失并不重要,因为缓冲区会覆盖旧数据)。 BufferStream传送到WritableStreamB WritableStreamB接收整个512KB缓冲区,并继续获取数据,因为它是通过BufferStream从ReadableStreamA写入的。 BufferStream传送到WritableStreamC WritableStreamC也接收整个512KB的缓冲区,但是这个缓冲区现在不同于WritableStreamB接收的缓冲区,因为更多的数据已经被写入BufferStream 。 这是可能的streamAPI? 我能想到的唯一方法是用一个方法创build一个对象,为每个目标创build一个新的PassThroughstream,这意味着我不能简单地通过它。 对于什么是值得的,我只是在data事件上监听新的处理程序,而使用旧的“stream动”API来完成这项工作。 使用.on('data')附加一个新函数时,我会直接用一个环形缓冲区的副本来调用它。

是否有JavaScript的静态调用图和/或控制stream图API?

是否有JavaScript的Call-Graph和/或Control-Flow-Graph生成器? 呼叫图 – http://en.wikipedia.org/wiki/Call_graph 控制stream程图 – http://en.wikipedia.org/wiki/Control_flow_graph 编辑:我正在寻找一个静态工具,让我访问graphics使用一些API /代码

有没有NodeJS'直通'stream?

有没有NodeJS'直通'stream? 即一个对象,无论我什么都立即出来,不变。 这看起来毫无意义,但在开发过程中作为快速变化代码的“静态中心”是非常有用的。

process.stdinstream的可读和数据事件之间有什么区别?

说我有 process.stdin.setEncoding('utf8'); var myString = ''; 有什么区别 process.stdin.on('readable', function() { myString += process.stdin.read(); }); 和 process.stdin.on('data', function(chunk) { myString += chunk; }); 如果inputstring一旦stdin结束,它们就会给我相同的myString 每个方面的最佳做法是什么? 谢谢

如何使用nodejsstream式传输MongoDB查询结果?

我一直在寻找一个如何将一个MongoDB查询的结果stream到一个nodejs客户端的例子。 到目前为止,我发现的所有解决scheme似乎都是一次读取查询结果,然后将结果发送回服务器。 相反,我会(显然)喜欢提供一个callback查询方法,并有MongoDB调用时,结果集的下一个块是可用的。 我一直在看mongoose – 我应该使用不同的驱动程序? 一月

streamAPI与Rest API?

这里的典型例子是Twitter的API。 我从概念上理解REST API是如何工作的,本质上它只是一个针对你的特定请求的服务器查询,然后你接收到响应(JSON,XML等)。 但是我不确定stream媒体API是如何在幕后工作的。 我知道如何使用它。 例如用Twitter来收听回应。 从响应侦听数据,并在推文中大块。 在string缓冲区中build立块,并等待表示Tweet结束的换行符。 但是他们做了什么工作呢? 比方说,我有一堆数据,我想为networking上的其他人本地设置一个streamAPI,就像Twitter一样。 这是怎么做的,有什么技术? 这是节点JS可以处理的东西吗? 我只是想把他们正在做的事情包围起来,让这件事情起作用。

TDD /使用NodeJS中的stream进行testing

我一直在试图find一个合理的方式来testing使用stream的代码。 有没有人find一个合理的方法/框架来帮助testing在nodejs中使用stream的代码? 例如: var fs = require('fs'), request = require('request'); module.exports = function (url, path, callback) { request(url) .pipe(fs.createWriteStream(path)) .on('finish', function () { callback(); }); }; 我目前testing这种types的代码的方式要么涉及简化与代码stream,以便我可以抽象出一个未经testing的代码块或通过这样写: var rewire = require('rewire'), download = rewire('../lib/download'), stream = require('stream'), util = require('util'); describe('download', function () { it('should download a url', function (done) { var fakeRequest, fakeFs, FakeStream; […]

在nodejs中将缓冲区转换为ReadableStream

我对Buffers和ReadableStreams相当陌生,所以也许这是一个愚蠢的问题。 我有一个库作为input一个ReadableStream,但我的input只是一个base64格式的图像。 我可以像这样在缓冲区中转换数据: var img = new Buffer(img_string, 'base64'); 但我不知道如何将其转换为ReadableStream或将获取的Buffer I转换为ReadableStream。 有没有办法做到这一点,或者我试图实现不可能的? 谢谢。

使用encryption模块的streamfunction获取文件的散列(即:没有hash.update和hash.digest)

node.js的crypto模块(至less在写这篇文章的时候)仍然不被认为是稳定的,所以API可能会改变。 事实上,互联网上每个人用来获取文件的散列(md5,sha1,…)的方法都被认为是遗留的(从Hash类的文档中)(注意:我的重点): 类:哈希 用于创build数据散列摘要的类。 这是一个可读写的stream。 写入的数据用于计算散列。 一旦stream的可写端被结束,使用read()方法来获得计算的散列摘要。 传统的更新和摘要方法也被支持。 由crypto.createHash返回。 尽pipehash.update和hash.digest被认为是遗留的,但是在引用片段上方显示的示例正在使用它们。 在不使用这些遗留方法的情况下获取哈希的正确方法是什么?

节点stream中的结束和结束事件有什么区别?

Node.jsstream触发finish事件和finish事件。 两者有什么区别?