2013-11-23 7 views
0

IHttpAsyncHandler를 사용하고 플러시를 통해 HTTP 스트리밍을 구현하려고합니다.Comet - IHttpAsyncHandler를 사용한 HTTP 스트리밍 - 청크가 작동하지 않음.

기본적으로 나는 한 번에 한 번씩 응답에 플러시합니다. 일부 시간 초과가 될 때까지 연결을 열어 둔 다음 클라이언트가 다른 연결을 시작해야합니다.

실제로 플러시가 작동하고 클라이언트가 플러시를 받지만 응답이 집계됩니다. 예를 들어, 나는 다음과 같은 플러시를 보내는 경우 :

"TextOnFlush1" 
"TextOnFlush2" 
"TextOnFlush3" 

합니다 (XMLHttpRequest.responseText에서) 다음 플러시 얻을 것이다 클라이언트 : 당신은 결국 클라이언트가 처리해야합니다 볼 수 있듯이

"TextOnFlush1" 
"TextOnFlush1""TextOnFlush2" 
"TextOnFlush1""TextOnFlush2""TextOnFlush3" 

을 매우 큰 메시지 (이전의 모든 플러시를 포함). 플러시 작업을 할 수있는 방법이 있습니까?하지만 플러시 할 때마다 레스 폰을 청소할 수 있습니까?

응답 헤더에 "Transfer-Encoding : chunked"헤더가 포함되어 있음을 알 수 있습니다. 이는 실제로 콘텐츠를 청크로 가져와야한다는 것을 의미합니다. 대신 집계 된 메시지를받습니다.

+0

전체 응답을 매번 다시 스트림에 플러시합니다. – Fals

+0

응답 할 때마다 다른 텍스트를 쓸 때마다. 처음으로 "TextOnFlush1", 두 번째 "TextOnFlush2"등. 그러나 클라이언트는 매번 누적 된 메시지를받습니다. 또는 플러시 사이의 응답을 지울 수 없습니까? –

답변

1

그래서 브라우저가 매번 플러시 할 때마다 응답을 정리할 방법이 없으므로이 msg 크기를 제한하고 큰 데이터에서 스트리밍 메시지를 한 번 새로 고치는 것이 좋습니다.