使用Node作为*客户端的长轮询流数据*

时间:2012-09-22 13:37:31

标签: javascript node.js

长期听众,第一次来电。

我需要使用Node作为客户端连接到使用长轮询的实时数据流,并在收到数据时对每个项目执行操作。

我发现有很多关于使用Node作为长轮询服务器的信息,但不是客户端。

我知道如何使用“请求”模块加载URL,但我的问题是我所知道的唯一回调是“oncomplete”回调,它仅在连接关闭后触发。当连接保持打开时,它不允许我实时访问正在接收的数据。我只在连接终止时才使用它。

Node是否有办法打开与远程服务器的HTTP连接,然后在收到数据时触发事件?

或者我想另一个问题是......在HTTP连接正在进行时,有没有办法访问所有数据进入的缓冲区?

感谢!!!

2 个答案:

答案 0 :(得分:2)

请勿使用请求模块。如果您使用内置于节点中的内容,则非常简单。

http://nodejs.org/api/http.html#http_event_data

response.on('data', function (chunk) {
    // chunk is the data just received
})

请求模块本身也有类似的方法,但我不知道它是什么。

答案 1 :(得分:2)

http.request()中的示例是否有效?

var req = http.request(options, function(res) {
  console.log('STATUS: ' + res.statusCode);
  console.log('HEADERS: ' + JSON.stringify(res.headers));
  res.setEncoding('utf8');
  res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
  });
});
req.end();