包含一个文本/事件流与restify - NodeJs

时间:2014-09-26 18:10:12

标签: node.js api request restify

我在NodeJs工作,我正在向restify发送一个带有node-workflow的JSONClient请求,我想发送text/event-stream标头,以便让我接受服务器响应。

对没有该标头的API的常见调用如下所示:

var client = restify.createJSONClient({
    url: 'http://api.example.com'
});

return client.get('/getResource', 
        function (err, req, res, obj) {
   //Do stuff            
}

这样做我得到一个答案,但它不是最后一个,例如我可以“工作”,“忙碌”或“做某事”所以我想让我接受服务器的响应以及响应何时完成然后“用数据做我需要的东西”。

有没有办法在获取请求(JSONClient)上发送标题来解析?

我尝试过类似的东西,但似乎没有工作

client.headers["content-type"] = 'text/event-stream';

我不知道我是否已经足够清楚,但我需要等同于:

curl -H "accept:text/event-stream" http://api.example.com/getResource

顺便说一句,因为我正在使用{{3}},所以我一直坚持求饶。

我想尽量避免进行投票。

1 个答案:

答案 0 :(得分:0)

我无法用restify解决它,似乎它们没有实现,否则我用eventsource解决了,我想分享这个解决方案:

var es = new EventSource('http://api.example.com/createAccount');
es.on('status', function(e) {
  // status event
  console.log(e.data);
}).on('result', function(e) {
  // result event
  console.log(e.data);
}).on('error', function() {
  console.log('ERROR!');
});

通过这种方式,流式传输为infinite,当服务器停止响应时,调用error函数(无限次)。请注意,我们不需要设置标头。这是eventsource已经做过的事情。

感谢@mscdex在另一个question回答。