如何使用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)); } });