【发布时间】:2013-12-08 05:52:08
【问题描述】:
我正在尝试通过使用 IHttpAsyncHandler 和刷新来实现 HTTP 流。
基本上我每隔一段时间就会刷新响应 - 保存打开的连接直到超时 - 然后客户端应该启动另一个连接。
刷新确实有效,并且客户端在刷新时会收到刷新,但是响应正在聚合。例如,如果我发送以下刷新:
"TextOnFlush1"
"TextOnFlush2"
"TextOnFlush3"
客户端将获得以下刷新(在 XMLHttpRequest.responseText 中):
"TextOnFlush1"
"TextOnFlush1""TextOnFlush2"
"TextOnFlush1""TextOnFlush2""TextOnFlush3"
正如您所看到的,最终客户端将不得不处理一个非常大的消息(其中将包含所有先前的刷新)。 有没有办法使用冲洗,但在每次冲洗时清洁响应?
请注意,响应标头包含此标头:“Transfer-Encoding:chunked”,这意味着我确实应该以块的形式获取内容,但我获取的是聚合消息。
【问题讨论】:
-
您每次都将整个响应再次刷新到流中。
-
每次我在响应中写入其他文本。第一次 "TextOnFlush1" ,第二次 "TextOnFlush2" 等等。但是客户端每次都会收到聚合消息,有什么办法解决这个问题?还是无法清除两次刷新之间的响应?
标签: asp.net http comet http-streaming ihttpasynchandler