Javascript字符串nodejs流实现

Javascript字符串nodejs流实现,javascript,node.js,Javascript,Node.js,我需要一个nodejs流(http://nodejs.org/api/stream.html)将数据发送到字符串的实现。你认识谁吗 为了更直接,我尝试通过管道发送请求-响应,如下所示: 请求('http://google.com/doodle.png.pipe(fs.createWriteStream('doodle.png')) 从 感谢编写一个符合流接口的类并不困难;下面的示例实现了最基本的功能,并且似乎与您链接的请求模块配合使用: var stream = require('stream'

我需要一个nodejs流(http://nodejs.org/api/stream.html)将数据发送到字符串的实现。你认识谁吗

为了更直接,我尝试通过管道发送请求-响应,如下所示: 请求('http://google.com/doodle.png.pipe(fs.createWriteStream('doodle.png'))


感谢

编写一个符合流接口的类并不困难;下面的示例实现了最基本的功能,并且似乎与您链接的请求模块配合使用:

var stream = require('stream');
var util = require('util');
var request = require('request');

function StringStream() {
  stream.Stream.call(this);
  this.writable = true;
  this.buffer = "";
};
util.inherits(StringStream, stream.Stream);

StringStream.prototype.write = function(data) {
  if (data && data.length)
    this.buffer += data.toString();
};

StringStream.prototype.end = function(data) {
  this.write(data);
  this.emit('end');
};

StringStream.prototype.toString = function() {
  return this.buffer;
};


var s = new StringStream();
s.on('end', function() {
  console.log(this.toString());
});
request('http://google.com').pipe(s);

您可能会发现
pipette
模块中的类
Sink
对于此用例非常方便。用它你可以写:

var sink = new pipette.Sink(request(...));
sink.on('data', function(buffer) {
  console.log(buffer.toString());
}
Sink
还可以相当优雅地处理从流返回的错误事件。有关详细信息,请参阅

[编辑:因为我意识到我使用了错误的事件名称。]

+1用于
移液管。我喜欢用它。(但我的狗没有)