igo*_*gue 14 javascript api streaming http node.js
您将如何使用Node创建流式API ?就像Twitter流媒体API一样.
我最终要做的是从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();
Run Code Online (Sandbox Code Playgroud)
只从FriendFeed获取数据,用节点创建Http服务器很容易,但它不能返回流(或者我还没有发现如何).
您可能希望设置一个系统来跟踪传入的请求并存储其响应对象.然后,当从FriendFeed流式传输新事件时,迭代他们的响应对象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));
}
});Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9441 次 |
| 最近记录: |