2012-07-26 109 views
0

我想要做的就是通过PUSH jQuery的时候,我的MongoDB添加一个条目。我看到很多jQuery插件,但它们的确不是PUSH而是LONG POLLINGjQuery的彗星推,没有彗星服务器

我非常渴望知道这是怎么发生的here(如果你打开两个不同的窗口,并尝试聊天,你就知道了)

这家伙写道this sample code

他是用prototype.js,我在后端代码所看到的,没有什么特别的。只需MySQL选择语句,但是每当MySQL数据库更改原型对象的Comet对象时都如此。

,我们可以做的jQuery类似的东西?我相信这不是轮询,而是PUSHprototype.js
还是像原型连接到插座?对不起,我对什么套接字不太了解,但当我的mongodb添加一个条目时,我真正想要做的是通过jQuery PUSH

+0

我看不到客户端请求的变化是如何* *推动,而不是投票 – Alexander 2012-07-26 19:56:35

+0

客户不问。 PHP的反应,当时的MySQL入口。如果您打开控制台窗口并在输入框中输入内容,您将看到它的xhr请求,但在PUSH上。怎么样? – 2012-07-26 19:57:49

+0

客户端通过与Comet服务器建立初始连接进行询问。彗星服务器然后推动任何它被告知推送到任何客户端连接。尽管Comet的应用程序是用JavaScript编写的,但jQuery并不适合用于此目的,因为它旨在用于DOM操作,而不是您想要做的事情。 – Crontab 2012-07-26 19:59:05

回答

-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消息和长轮询将停止。

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