2010-05-25 19 views
12

के साथ स्ट्रीमिंग एपीआई कैसे बनाएं Node के साथ स्ट्रीमिंग एपीआई बनाने के लिए आप कैसे जाएंगे? बस Twitter streaming API की तरह।नोडजेएस

मैं अंततः FriendFeed api से पहला अपडेट प्राप्त करना चाहता हूं, और जब कोई नया उपलब्ध हो जाता है (यदि आईडी अलग है) स्ट्रीम करें, और बाद में इसे वेब सेवा के रूप में बेनकाब करें ताकि मैं इसका उपयोग कर सकूं मेरी वेबसाइट पर WebSockets :)।

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

कौन सा केवल FriendFeed से डेटा हो जाता है, बनाने नोड के साथ HTTP सर्वर आसान है, लेकिन यह एक धारा वापस नहीं लौट सकते हैं (या मैं अभी तक पता चला नहीं किया है:

अब तक मैं इस राशि किस तरह)।

उत्तर

6

आप एक ऐसी प्रणाली स्थापित करना चाहते हैं जो आने वाले अनुरोधों का ट्रैक रखती है और उनकी प्रतिक्रिया वस्तुओं को संग्रहित करती है। फिर जब फ्रेंडफिड से एक नई घटना स्ट्रीम करने का समय हो, तो उनके प्रतिक्रिया ऑब्जेक्ट्स और responses[i].write('something') उनके माध्यम से फिर से शुरू करें।

LearnBoost's Socket.IO-Node देखें, आप उस प्रोजेक्ट का उपयोग अपने ढांचे के रूप में भी कर सकते हैं और इसे स्वयं कोड नहीं करना चाहते हैं।

(चैट के लिए) Socket.IO-नोड उदाहरण एप्लिकेशन से:

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

मैं यह कर सकता है नहीं, मैं एक कठिन समय शायद नोड को समझने आ रही है, इसलिए, मैं http दोहराना चाहते हैं अनुरोध करें, लेकिन किसी कारण से मैं httpRequest.end पर कॉलबैक संलग्न नहीं कर सकता :( वैसे भी, बहुत बहुत धन्यवाद! – igorgue

संबंधित मुद्दे