2010-05-25 24 views
12

Node ile bir akış API'si oluşturmak için nasıl giderdiniz? Tıpkı Twitter streaming API gibi.NodeJS ile bir akış API'si oluşturma

Nihayetinde yapmak istediğim ilk güncelleme FriendFeed api'dan alınıyor ve yeni bir tane kullanıma sunulduğunda (id farklıysa) ve daha sonra bir web hizmeti olarak sunulduğunda yayınlanıyor. Web sitemde WebSockets :). Sadece düğüm ile HTTP sunucusu kolaydır ama bir dere döndüremez (ya da ben henüz öğrenemedim yaratarak, FriendFeed veriyi alır

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

:

Şimdiye kadar bu var Nasıl).

cevap

6

Gelen istekleri takip eden ve yanıt nesnelerini saklayan bir sistem kurmak istersiniz. Ardından FriendFeed'den yeni bir etkinlik yayınlama zamanı geldiğinde, yanıt nesnelerini ve responses[i].write('something')'u tekrarlayın.

LearnBoost's Socket.IO-Node'a bakın, bu projeyi kendi çerçeveniz olarak kullanabiliyor ve kendiniz kodlamak zorunda kalmayacaksınız. (Sohbet için) Socket.IO-Düğüm örnek uygulamasından

:

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

ben http tekrarlamak istiyorum, ben zor zamanlar muhtemelen Düğümü anlama yaşıyorum bunu, bu yüzden olamazdı istek, ama bir nedenle httpRequest.end :(. için bir geri arama ekleyemiyorum, çok teşekkürler! – igorgue