- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
(这个问题类似于 this one ,但它是针对使用 XMLHttpRequest 而不是 Comet 的 iframe。)
我正在开始这样的异步长轮询:
var xhr = new XMLHttpRequest();
xhr.open('POST', url);
xhr.send();
如果我在内部执行此操作 <script>...</script>
在头部,它会导致文档永远保持加载状态。 (我正在 Mac OS X 和 iPhone 上的 Safari 中对此进行测试,它是我需要支持的唯一浏览器)。
使用 DOMContentLoaded
或 load
事件将不起作用。
使用具有足够大 延迟的 setTimeout 将起作用。 0 不会,1000 会,100 有时会,而其他时候不会。我对此感到不舒服。
我发现唯一可行的方法是将两者结合起来:
document.addEventListener('DOMContentLoaded', function () {
setTimeout(function () {
var xhr = new XMLHttpRequest();
xhr.open('POST', url);
xhr.send();
}, 0);
});
我想这暂时解决了问题,但我仍然担心它会在未来崩溃。
//编辑:这也不能可靠地工作。
有谁知道更可靠的方法吗?
最佳答案
我不确定,但似乎如果浏览器显示它仍在下载,那是完全正确的 - 这不就是 Comet 编程的本质吗?服务器仍在发送未缓冲的内容,当它在 javascript block 中流式传输时,它会被执行,从而允许服务器将事件推送到客户端浏览器。
在 Ajax 早期(例如在 IE6 上,XMLHttpRequest
是一个单独的 ActiveX 对象)我希望浏览器不知道它仍在等待。
但在 Safari 4、Chrome、FX3.5 和所有现代浏览器中 XMLHttpRequest
是内置的 - 它知道它仍在等待服务器仍然流式传输其内容,就像它与 <IFrame>
一样。
简而言之 - 我希望任何 Comet 方法都能显示浏览器仍在下载,因为它是。我希望您发现的任何变通办法都能在未来的构建中得到修复,因为 Comet 本质上是一种让服务器推送模型正常工作的 hack。
但是他们已经开始在 HTML 5 中构建真正的服务器推送支持。
移动Webkit是否支持HTML 5 draft event-source
标记了吗?如果是这样,您可以尝试一下。
然后你会得到这样的东西:
<!-- new HTML 5 tag supporting server-push -->
<event-source src="http://myPushService.com" id="service">
<script type="text/javascript">
function handleServiceEvent(event) {
// do stuff
}
// tell browser to fire handleServiceEvent in response to server-push
document.getElementById('service').addEventListener('event name', handleServiceEvent, false);
</script>
关于javascript - 加载 cometd /服务器推送 XMLHttpRequest 时停止浏览器 “throbber of doom”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1735560/
我只是 cometd 的初学者,我很感兴趣并想了解什么是 cometd 以及它的用途我用谷歌搜索并找到了一些资源。在以下链接下 1. http://docs.cometd.org/reference/
正如标题所说,我正在开发网络聊天应用程序,我希望其中有很多用户活跃,并且不能使用 ajax 轮询。我基本上想让一个人 2 人聊天,但请原谅我是一个菜鸟,但我真的迷路了。我读过很多关于 cometd 的
我正在开发我目前正在使用的 Spring-MVC 应用程序在 Apache tomcat 7.0.55 上使用 Cometd 实现聊天功能。我有基本的代码在运行,我可以通过 channel 发送消息并
我正在尝试在 Jetty 9.2 上运行我们的 Spring-MVC 应用程序,该应用程序具有 Cometd(3.0.9)。目前它与 Tomcat7 完美配合,但我们正在将 Jetty 作为另一个应用
我可以通过简化版本的示例来最好地描述我正在寻找的内容。 Tornado 的演示之一是一个简单的聊天服务器: https://github.com/facebook/tornado/blob/maste
它的功能就是所谓的“服务器推送”,google wave 似乎也利用了这一点。 有人能解释一下这个概念通过代码片段 它如何在 Web 应用程序中实际工作? 最佳答案 一些伪javascript: /
我在本地主机上使用Orbited作为Comet服务器。它正在监听端口: 9000 for http 61613 for stomp 我的JavaScript调试器报告错误:未在行中定义JSON: va
我在向客户端发回消息时遇到问题。下面是我的代码 JavaScript dojox.cometd.publish('/service/getservice', {
我正在考虑编写一个需要能够将消息推送到浏览器的实时网络应用程序。当我第一次阅读 Comet 时,由于浏览器支持薄弱,人们似乎认为它是一种脆弱且不成熟的方法。今天,它似乎是一种既定又实用的技术。但据我所
对于不需要“实时”但可能延迟(例如 1 分钟)的事件是否值得使用 Comet。这样将是: 推特状态更新 Facebook 更新 我知道 comet 非常适合聊天应用程序(facebook 和 GTal
我对 java 中的 cometd 很陌生。 我对 java 中的 cometd 更感兴趣,但是当我用 google 搜索它时,我几乎找不到一个链接这是 cometd 链接,文档中不清楚。 有人可以发
我开发 Web 应用程序已经有一段时间了,但最近才接触到 Comet 服务器端推送技术,我对这项技术的理解还很不成熟。而链接http://www.zeitoun.net/articles/comet_
我有一个 cometd 应用程序在 jetty 内运行。我想从客户端获取传入的广播,然后进行一些处理(涉及与数据库交互),然后如果没有遇到错误,则通过向所有订阅者广播来完成。 我最初的想法是通过扩展来
是否有基于 .net 的 cometd 引擎?比如 Ajax 推送引擎 那是免费和开源的吗? 最佳答案 轨道式 Orbited是一个 HTTP 守护进程,针对长期 cometd 连接进行了优化。它旨在
我有一些关于 Comet 的信息,但我想知道它如何保持连接打开(从客户端到服务器)。它是如何做到的? 最佳答案 从长远来看,Comet 或长轮询 ajax 不会保持连接打开。 HTTP 是无状态的,它
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在尝试在我的应用程序中实现 Comet,但由于没有使用 JavaScript 的经验,我不确定如何在客户端实现。 当服务器收到一个请求时,它只是保持它打开并在必要时向它写入数据: def rend
我一直在我的网络应用程序的日志文件中看到奇怪的消息。 127.0.0.1 - - [15/Jan/2013:23:00:53 +0000] "POST /cometd/connect HTTP/1.1
嗨,很长一段时间以来,我一直在尝试在 tomcat 中使用 comet 制作聊天应用程序。问题是我已经在云中部署了应用程序,其中开放连接有 30 秒的上限。因此,每当服务器需要超过 30 秒的时间来响
我有一个关于 Comet 实现的问题。我知道它用于处理类似于现在可以通过 Servlet 3.0 异步功能实现的异步请求。然而,我不明白的是如何向调用客户端完成推送。 在网络套接字中,我们通过提供 i
我是一名优秀的程序员,十分优秀!