- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
有没有办法在不破坏 XHR 对象的情况下清除 XHR 对象的 responseText?
我需要保持与 Web 服务器的持久连接打开,以便将实时数据提供给浏览器。问题是,有相对大量的数据通过(每秒持续数百 K),因此内存使用是一个大问题,因为此连接必须至少保持打开状态几分钟。 responseText 会很快变得非常大,即使我发回的 JSON 已被压缩得尽可能小。
由于服务器端应用程序的工作方式,如果我使用 AJAX 样式的短轮询并在完成后销毁 XHR 对象,即使在几毫秒内我也会错过大量重要数据解析响应,创建一个新的 XHR 并将其发送出去。我没有使用重叠请求的选项,因为网络服务器一次只接受一个连接。 (不要问。)所以 Comet 正是我需要的模型。
我想做的是在每个 JSON block 从服务器返回时解析它,然后清除 responseText 以便我可以继续使用相同的连接。但是,responseText 是只读的。我找到的任何方法都不能直接清空。
我在这里缺少图片的一部分吗?有谁知道我读完后可以用来释放 responseText 的任何技巧吗?或者还有其他服务器响应可以去的地方吗?
我不包括代码,因为这实际上几乎是一个与代码无关的问题。生成 XHR 和处理返回数据的 Javascript 例程非常非常简单。
最佳答案
与其他响应相反,“长轮询”不是一个长连接。 “长轮询”是许多顺序连接,如果不需要响应,每个连接都设置为保持连接相当长的一段时间。它们确实超时(通常在 25-30 秒左右),然后重新建立新连接。由于 HTTP1.1 允许重复使用现有连接,因此不必重新协商连接,因此几乎可以立即重新建立连接。
因此,只需使用多个请求即可。由于重新建立连接的开销确实可以忽略不计,并且每个新连接都可以让您销毁之前的响应文本,因此从性能/开销的 Angular 来看,这是完全可行的解决方案,并且还可以解决您的内存问题。
[编辑] 作为 WebSync 的作者之一,我是根据经验说的.
关于javascript - Comet、responseText 和内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1275818/
我正在尝试使用 Ajax,并使用以下代码。 var r = new XMLHttpRequest(); r.open("POST", "pythonTesting.php", true); r.onr
我的 JSON.parse 有问题。在我将 API 调用从 request 更改为 request.Promise.get 后,我收到一个错误 - TypeError: Cannot read pro
我的代码- document.getElementById("lblmsg").innerHTML=xmlhttp.responseText; if(xmlhttp.r
在我的代码中,responseText 不工作。它应该显示,在文本框中输入的文本+“:您的请求已被syam看到” var xmlHttp
我正在尝试使用 Ajax 和 PHP 将数据插入数据库。现在的问题是 responseText 不返回任何消息,但插入成功完成这是我的脚本 function aa() {
我正在使用 ajax 从我的 php 解析器检索 json_encode() 数组。 响应文本为["4.wav","2.wav","3.wav","6.mp3","1.mp3","5.wav"] 如果
我玩得很开心 Redis 网盘 Dart 这是我写的 #import('dart:html'); #import('dart:json'); class ChatClient { XMLHttpR
我的 servlet 响应一个包含“false”或“true”的字符串=> Servlet 代码:out.println(validusername); validusername 是来 self 的
我正在使用 jquery get 来调用 ASP MVC Controller 。它返回部分 View 。即一堆 html 如果出现错误,我想为用户填充一些信息,但 ASP MVC 正在发送回整个页面
以下形式成功发送数据到MySQL db。但它无法显示 div 内的responseText .我怎样才能得到回复? First Name Password Ajax Respons
这让我很困惑。我有一个 url 数组(用于数据),我需要将其拉入页面并在全部加载后处理结果。我正在尝试使用 JQuerys Defered 功能来确保在处理结果之前所有 ajax 调用都已完成。一旦我
我无法将准确的字符串与我的 AJAX 脚本的结果进行比较。出于某种原因,我的 if 语句总是失败。通过删除 if 测试,我可以看到返回了正确的值(“成功”),但是当我保留它时,它的计算结果为 fals
我正在将我的表单数据发布到谷歌电子表格(它正在运行,但我无法收到回复)并试图返回已发送的值。电子表格有 3 个标题 - 名称、图像、结果。每当我发送表单数据时,我都可以在正确的标题下将值写入电子表格,
这个问题在这里已经有了答案: How do I return the response from an asynchronous call? (41 个回答) 关闭 5 年前。 我正在尝试使用 aj
我想在网页中显示在 ajax 请求的错误部分中我的 .NET 代码中引发的异常消息: [HttpPost] [AllowAnonymous] public virtual ActionResult A
这段代码有问题;返回值返回为“未定义”。有什么问题? var fx = null; xmlhttp.open("GET", URL ,false); xmlhttp.onreadystatechang
我是 JavaScript 新手。我需要测试 XMLHttpRequest.responseText 的输出在给定的 URL 上。最简单的方法是什么? var url = "http://m.goog
HTML 页面: xhr var xhr_test = new XMLHttpRequest(); xhr_test.open("
我会尽力解释我的问题,但说实话,我自己也有点困惑,所以我无法想象这对你们来说会容易得多。 对,我正在为我经常访问的网站的用户脚本创建一个脚本。我想做的是劫持任何ajax请求,我做得很好,然后修改res
如何拆分从数据库接收的 xmlhttp.responseText 逐行选择?我的数据库布局包含 3 列,我想将其移交给函数。 响应文本如下所示: 75px, 218px, foo, 12px, 13p
我是一名优秀的程序员,十分优秀!