2014-04-13 12 views
1

json 객체를 계속 전송하는 스트리밍 엔드 포인트를 만들고 싶습니다. 청크 분할 전송 인코딩을 사용하여 시도한 결과 성공적으로 모든 브라우저 (chrome, firefox, safari)가 text/html 또는 text/plain 인 경우 서버에서 전송 된 데이터를 렌더링 할 수있었습니다. 하지만 application/json을 content-type으로 사용할 때 크롬에서는 작동하지 않습니다. 여기 코드는 다음과 같습니다크롬이 청크 json 응답을 렌더링하지 않습니다.

var http = require('http'); 

http.createServer(function(request, response){ 
    response.setHeader('Connection', 'Transfer-Encoding'); 
    response.setHeader('Transfer-Encoding', 'chunked'); 
    response.setHeader('Cache-Control', 'no-cache'); 
    // response.setHeader('Content-Type', 'application/json'); 
    response.setHeader('Content-Type', 'text/html'); 


    setInterval(function(){  
     response.write('test </br>'); 
     // response.write('{"test": "test"}'); 
    }, 10); 

}).listen(8000); 

위의 코드는 예상대로 작동하지만, 응용 프로그램/JSON 형식으로 작동하도록 캔트. 내가 놓친 게 있니?

+0

Google 크롬은 "보기 소스"모드에서 실시간으로 출력을 렌더링합니다. 'view-source : http : // localhost : 8000 /'을 보라. 예상되는 행동은 무엇입니까? –

+0

이것은 예상되는 동작입니다. 그래서, 만약 내가 트위터 크롬 브라우저 똑같은 일이 바로 일어날 것입 API를 통해 스트리밍 볼 수 있습니까? – az7ar

답변

2

이것은 브라우저의 버그입니다. 그리고 그 최신 크롬 (적어도 카나리아에서)에 고정.

Chrome Bug - Transfer-Encoding chunked not support on text/plain

사파리 (나는 맥 OSX 테스트 한) 청크 인코딩 비 HTML 콘텐츠를 렌더링하지 않는 전용 브라우저이다.

+0

Chrome에서 여전히 작동하지 않습니다. – Jekis

+0

은 지금 수정 된 것 같습니다. Mac에서 사파리 만 작동하지 않습니다. –