如何使用NodeJS创buildstream媒体API

你将如何去创build一个stream媒体API的节点 ? 就像TwitterstreamAPI一样 。

我最终想做的是从FriendFeed api获得第一个更新,当新的可用(如果id不同),然后将其公开为Web服务,所以我可以在我的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获取数据,创build带有节点的Http服务器很容易,但不能返回一个stream(或者我还没有find如何)。

你会想build立一个系统来跟踪传入的请求并存储它们的响应对象。 然后,当从FriendFeedstream出一个新事件的时候,遍历它们的响应对象并responses[i].write('something')给它们。

看看LearnBoost的Socket.IO-Node ,你甚至可以把这个项目当作你的框架,而不必自己编写代码。

从Socket.IO-Node示例应用程序(用于聊天):

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