【问题标题】:Comet - HTTP Streaming with IHttpAsyncHandler - chunk not workingComet - 使用 IHttpAsyncHandler 的 HTTP 流式传输 - 块不起作用
【发布时间】: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


【解决方案1】:

因此,无法让浏览器在每次刷新时清除响应 - 因此限制此消息大小并偶尔刷新大数据的流式消息是一个好习惯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 2012-10-20
    • 2015-04-07
    相关资源
    最近更新 更多