2010-05-25 10 views
12

¿Cómo crearía una API de transmisión con Node? al igual que el Twitter streaming API.Cómo crear una API de transmisión con NodeJS

Lo que quiero hacer al final es obtener la primera actualización del FriendFeed api, y transmitir cuando haya uno nuevo disponible (si el ID es diferente) y luego exponerlo como un servicio web para poder usarlo con WebSockets en mi sitio web :).

Hasta ahora tengo esto:

var sys = require('sys'), 
    http = require('http'); 

var ff = http.createClient(80, 'friendfeed-api.com'); 
var request = ff.request('GET', '/v2/feed/igorgue?num=1', 
         {'host': 'friendfeed-api.com'}); 

request.addListener('response', function (response) { 
    response.setEncoding('utf8'); // this is *very* important! 
    response.addListener('data', function (chunk) { 
     var data = JSON.parse(chunk); 
     sys.puts(data.entries[0].body); 
    }); 
}); 
request.end(); 

cual sólo obtiene los datos de FriendFeed, creando el servidor HTTP con el nodo es fácil, pero no puede devolver una secuencia (o aún no he descubierto cómo).

Respuesta

6

Desea configurar un sistema que realice un seguimiento de las solicitudes entrantes y almacene sus objetos de respuesta. Luego, cuando llegue el momento de transmitir un nuevo evento desde FriendFeed, itere a través de sus objetos de respuesta y responses[i].write('something').

Echa un vistazo a LearnBoost's Socket.IO-Node, incluso puede que solo sea capaz de utilizar ese proyecto como su marco y no tener que codificarlo usted mismo.

A partir de la aplicación de ejemplo Socket.IO-Nodo (para el chat):

io.listen(server, { 

    onClientConnect: function(client){ 
     client.send(json({ buffer: buffer })); 
     client.broadcast(json({ announcement: client.sessionId + ' connected' })); 
    }, 

    onClientDisconnect: function(client){ 
     client.broadcast(json({ announcement: client.sessionId + ' disconnected' })); 
    }, 

    onClientMessage: function(message, client){ 
     var msg = { message: [client.sessionId, message] }; 
     buffer.push(msg); 
     if (buffer.length > 15) buffer.shift(); 
     client.broadcast(json(msg)); 
    } 

});
+0

que no podía hacerlo, yo estoy teniendo un tiempo difícil, probablemente, la comprensión de nodo, así, quiero repetir el http solicitud, pero por alguna razón no puedo adjuntar una devolución de llamada a httpRequest.end :(. De todos modos, muchas gracias! – igorgue

Cuestiones relacionadas