2013-10-24 4 views
0

Я работаю с этой библиотекой: mTwitterКак получить доступ к данным из потока?

Моя проблема, когда я хочу использовать функцию потоковой передачи:

twit.stream.raw(
    'GET', 
    'https://stream.twitter.com/1.1/statuses/sample.json', 
    {delimited: 'length'}, 
    process.stdout 
); 

Я не знаю, как получить доступ к JSON, который генерирует process.stdout.

+0

Это просто функция вывода node.js (для вывода на консоль, для чего обычно используется 'stdout'). Вы проверили [документацию, созданную поиском Google process.stdout "?] (Http://nodejs.org/api/process.html#process_process_stdout) – h2ooooooo

ответ

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 
); 
0

Я не уверен, если вы действительно понимаете, что означает слово streaming. В node.js stream является в основном файловым дескриптором. В примере используется process.stdout, но сокет tcp также является потоком, открытый файл также является потоком, а канал также является потоком.

Функция streaming предназначена для передачи полученных данных непосредственно в поток без необходимости вручную копировать данные из источника в пункт назначения. Очевидно, это означает, что вы не получаете доступ к данным. Подумайте о потоках, как трубы на Unix-оболочках. Этот кусок кода в основном делает это:

twit_get | cat 

В самом деле, в узле, вы можете создавать виртуальные потоки в чистом JS. Таким образом, можно получить данные - вам просто нужно реализовать поток. Посмотрите на документацию по узлу потока API: http://nodejs.org/api/stream.html

Смежные вопросы