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 中做类似的事情吗?我相信这不是投票,而是PUSHprototype.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

readyState1,代表OPENED

想测试一下吗?覆盖 XMLHttpRequestRedirected.onreadystatechanged 避免它重新连接(并保持打开等待。)

$ comet.ajax.transport.onreadystatechange = function()
  console.log("Don't reconnect");
; 
$ comet.ajax.transport.abort();

您将看到Don't reconnect 消息,并且长轮询将停止。

现在尝试发送消息。什么都不会发生。

【讨论】:

以上是关于jQuery彗星推送,没有彗星服务器的主要内容,如果未能解决你的问题,请参考以下文章

为java选择彗星框架

服务器客户端通信:长轮询、彗星和服务器发送事件 (SSE)

如何确定 Lightstreamer / Ajax 彗星推送数据更改了哪些内容?

彗星性能问题

使用 php 和 jquery 的简单彗星示例

通过 websocket 的彗星:“未知的巴约传输”