【问题标题】:How to create a streaming API with NodeJS如何使用 NodeJS 创建流式 API
【发布时间】:2011-02-23 19:07:17
【问题描述】:

您将如何使用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 获取数据,使用节点创建 Http 服务器很容易,但它无法返回流(或者我还没有找到方法)。

【问题讨论】:

    标签: javascript http api streaming node.js


    【解决方案1】:

    您可能希望建立一个系统来跟踪传入的请求并存储它们的响应对象。然后,当需要从 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));
        }
    
    });

    【讨论】:

    • 我做不到,我可能很难理解 Node,所以,我想重复 http 请求,但由于某种原因,我无法将回调附加到 httpRequest.end : (。无论如何,非常感谢!
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2014-12-22
    • 2017-12-22
    • 2021-01-31
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多