我正在使用此库:mTwitter
我的问题是,当我想使用流媒体功能时:
twit.stream.raw(
'GET',
'https://stream.twitter.com/1.1/statuses/sample.json',
{delimited: 'length'},
process.stdout
);
我不知道如何访问生成process.stdout
的JSON。
答案 0 :(得分:1)
您可以使用来自stream.Writable
的可写流。
var stream = require('stream');
var fs = require('fs');
// This is where we will be "writing" the twitter stream to.
var writable = new stream.Writable();
// We listen for when the `pipe` method is called. I'm willing to bet that
// `twit.stream.raw` pipes to stream to a writable stream.
writable.on('pipe', function (src) {
// We listen for when data is being read.
src.on('data', function (data) {
// Everything should be in the `data` parameter.
});
// Wrap things up when the reader is done.
src.on('end', function () {
// Do stuff when the stream ends.
});
});
twit.stream.raw(
'GET',
'https://stream.twitter.com/1.1/statuses/sample.json',
{delimited: 'length'},
// Instead of `process.stdout`, you would pipe to `writable`.
writable
);
答案 1 :(得分:0)
我不确定你是否真的明白streaming
这个词的意思。在node.js中,stream
基本上是文件描述符。该示例使用process.stdout
,但tcp套接字也是流,打开文件也是流,管道也是流。
因此streaming
函数旨在将接收到的数据直接传递给流,而无需手动将数据从源复制到目标。显然,这意味着您无法访问数据。想想在unix shell上像管道一样流式传输。这段代码基本上是这样做的:
twit_get | cat
实际上,在节点中,您可以在纯js中创建虚拟流。因此可以获取数据 - 您只需要实现流。查看流API的节点文档:http://nodejs.org/api/stream.html