jQuery彗星推送,没有彗星服务器
Posted
技术标签:
【中文标题】jQuery彗星推送,没有彗星服务器【英文标题】:jQuery comet push, without comet server 【发布时间】:2012-07-26 19:52:30 【问题描述】:当我的 mongodb 添加条目时,我想做的是通过 jQuery PUSH
。我看到了很多 jQuery 插件,但它们是 LONG POLLING
而不是 PUSH
。
我很想知道这是怎么回事here(如果你打开两个不同的窗口并尝试聊天你就会知道)
这家伙写了this sample code。
他正在使用prototype.js
,我在后端代码中看到,没有什么特别之处。只是 mysql select 语句,但每当 MySQL 数据库更改原型彗星对象时都会对此做出响应。
我们可以在 jQuery 中做类似的事情吗?我相信这不是投票,而是PUSH
到prototype.js
。
或者它就像原型连接到套接字?抱歉,我不太了解套接字是什么,但是当我的 mongodb 添加条目时,我真正想做的是通过 jQuery PUSH
。
【问题讨论】:
我看不到请求更改的客户端是如何推送而不是轮询 客户没有问。 php 对此的响应,当 mysql 条目存在时。如果您将打开控制台窗口并在输入框中输入一些内容,您将看到它的 xhr 请求,但在 PUSH 上。怎么样? 客户端通过与 Comet 服务器建立初始连接来询问。 Comet 服务器然后将它被告知要推送的任何内容推送到连接的任何客户端。虽然 Comet 的应用程序是用 javascript 编写的,但 jQuery 不是一个合适的工具,因为它是为 DOM 操作而设计的,而不是你想要做的。 是的没错,但是没有彗星服务器!!在bit.ly/QeNEMK 阅读他的代码。怎么会? 嗯,如果您不完全了解您链接的演示应用程序是如何工作的,那么在您解决该问题之前,您需要做更多的研究(自己)。对不起。 【参考方案1】:让我们一劳永逸地解决这个问题。由于我不是原型用户,因此我必须阅读文档才能提出这一点。
您可以通过这种方式从 JavaScript 控制台访问底层 XMLHttpRequestRedirected。
$ comet.ajax.transport.readyState
1
readyState
是1
,代表OPENED
。
想测试一下吗?覆盖 XMLHttpRequestRedirected.onreadystatechanged
避免它重新连接(并保持打开等待。)
$ comet.ajax.transport.onreadystatechange = function()
console.log("Don't reconnect");
;
$ comet.ajax.transport.abort();
您将看到Don't reconnect
消息,并且长轮询将停止。
现在尝试发送消息。什么都不会发生。
【讨论】:
以上是关于jQuery彗星推送,没有彗星服务器的主要内容,如果未能解决你的问题,请参考以下文章