我在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}},所以我一直坚持求饶。
我想尽量避免进行投票。
答案 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
已经做过的事情。