2012-07-26 106 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消息和長輪詢將停止。

現在嘗試發送消息。什麼都不會發生。