2014-09-26 2 views
0

NodeJs에서 작업 중이며 API에 restify과 함께 JSONClient 요청을 만들고 있는데 응답을 서버로 받기 위해 text/event-stream 헤더를 보내려고합니다. .restify가 포함 된 텍스트/이벤트 스트림 포함 - NodeJs

해당 헤더없이 API에 대한 일반적인 호출은 다음과 같습니다

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

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

내가 대답을 얻을 수 있지만, 내가 "작업"얻을 수있는 예를 들어, 마지막 일이 아니다 이렇게, "중"또는 "일을하고있는 것"이므로 서버 반응에 나를 허락하고 응답이 끝나면 "필요한 자료를 처리하십시오".

가져 오기 요청 (JSONClient)에서 헤더를 보낼 수 있습니까?

curl -H "accept:text/event-stream" http://api.example.com/getResource 
: 나는 내가 충분히 명확하고있어 알고하지 않습니다하지만 난에 동등 필요
client.headers["content-type"] = 'text/event-stream'; 

를 작동하지 않는이 같은 시도했지만 보이는 것

덧붙여서, node-workflow을 사용하고 있기 때문에 나는 restify를 계속합니다.

가능한 한 폴링을하지 않으려합니다.

답변

0

난 그렇지 않으면 내가 eventsource으로 해결, 그들이 구현되지 않는 것 같습니다, restify으로 해결되지 수 있고 그 솔루션을 공유하려는 : 스트리밍이 infinite입니다 이런 식으로

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!'); 
}); 

및 서버가 응답을 멈 추면 error 함수가 호출됩니다 (무한 시간). 우리는 헤더를 설정할 필요가 없다. eventsource가 이미 수행 한 것입니다.

@mscdex에게 감사 드리며 다른 사람은 question입니다.