javascript - 如何使用 NodeJS 创建流式 API

标签 javascript http api streaming node.js

您将如何使用 Node 创建流式 API ?就像 Twitter streaming 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();

仅从 FriendFeed 获取数据,使用 Node 创建 Http 服务器很容易,但它无法返回流(或者我还没有找到方法)。

最佳答案

您可能希望建立一个系统来跟踪传入的请求并存储它们的响应对象。然后,当需要从 FriendFeed 流式传输新事件时,遍历他们的响应对象并将 responses[i].write('something') 发送给他们。

查看 LearnBoost's 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));
    }

});

关于javascript - 如何使用 NodeJS 创建流式 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2906594/

相关文章:

javascript - 在 JavaScript 中创建动态表的一些误解

javascript - 使用 javascript 从 firebase 获取数据

ruby-on-rails - 如何使用 Rails 中的 Paperclip 将文件系统中的图像添加到模型中?

javascript - AngularJS 新路由器无法实例化 Controller

Http 到 Https POST

javascript - 如何在 React 中用 JSON 数据填充下拉列表?

ios - Instagram API 是否允许您的应用拍摄 IG 照片?

javascript - 我如何在上传之前从fineuploader中删除一些文件

javascript - 状态已更改,但组件未刷新

javascript - 如何将元素与 jQuery 中的任何数据属性进行匹配?