有一种方法来清除一个XHR对象的responseText而不破坏XHR对象?

我需要保持持久连接打开到Web服务器实时数据反馈给浏览器。问题是,有相当大量的数据通过(每秒数几百K不断地)来的,所以内存的使用是一个很大的问题,因为这方面必须保持打开状态至少几分钟。的responseText得到很大很快,即使我发回JSON已经嘎吱嘎吱小,因为它可以得到的。

由于服务器端应用程序的工作方式,如果我使用AJAX风格的短轮询,只是销毁XHR对象时,我用它做,我甚至在几毫秒错过显著大量的重要数据需要解析响应,创建一个新的XHR并发送出去。我没有使用重叠请求的选项,如Web服务器只接受一次一个连接。 (不要问)。所以彗星正是我所需要的模型。

我想要做的是分析每个JSON块,因为它来自于服务器返回,然后清除responseText的,这样我可以继续使用相同的连接。然而,responseText的是只读的。它不能由我已发现的任何方法来直接排空。

有我在这里失踪图片的一部分?有谁知道我可以用腾出的responseText当我读完它什么花样?还是有另外一个地方的服务器响应可以去?

我不包括代码,因为这是真的差点代码无关的问题。该产卵XHR时,处理返回的数据中的JavaScript程序是非常,非常简单。

有帮助吗?

解决方案

这是长轮询是如何工作的。你保持一个索引读取的最后一个行号,并与您的间隔每一跳,从该点开始读。它是一个长的连接,从而一个长的响应。

一个新鲜responseText将意味着一个新的连接。但随后它不会是彗星了;)

其他提示

相反的其他响应,“长轮询”是不是一个长连接。 “长轮询”是在序列中的许多连接,每个连接设置为保持连接供相当长一段时间内,如果不需要响应。他们的的超时(通常大约25-30s),然后重新建立新的连接。由于HTTP1.1允许重新使用现有的连接,该连接不必被重新协商,并且因此可以被重新建立几乎瞬间。

所以,只要使用多个请求。由于实在是可以忽略不计的开销重新建立连接,而每个新的连接将使你能够摧毁以前的响应文本,这是从性能/开销的角度完全可行的解决方案,并会解决你的记忆问题以及

[编辑]我是从经验上说,为 WebSync 的作者之一。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top