2009-04-09 43 views
58

所有HTTP響應都需要客戶端啓動它們,即使是使用AJAX創建的響應。但是GMail的聊天功能可以接收來自其他用戶的消息,即使我只是坐在舒適的電腦椅上觀看,卻不會與瀏覽器交互。他們是如何做到的呢?GMail Chat如何在沒有客戶端交互的情況下發出AJAX請求?

+8

問題劫持:Gmail使用什麼樣的AJAX輪詢策略來實現聊天客戶端? – Jimmy 2009-04-09 03:56:29

+0

哇,你幾乎重寫了這個問題。 – 2009-04-09 04:06:24

+0

@Pablo:是啊......很確定這是他所問的,但是沒有弄清楚「直到我已經回答了,所以我想清理它」,因爲別人犯了同樣的錯誤。 – Shog9 2009-04-09 04:08:10

回答

42

達意被稱爲「彗星」,也稱爲「服務器推送」,「反向AJAX」等

這是關於從服務器將數據推到瀏覽器,保持HTTP連接活着。在wikipedia articleEnglish version)上查找更多信息。

這裏還有一個pretty good presentation和DWR的Joe Walker,他在那裏談論彗星。

8

正如您正確地指出的那樣,HTTP要求數據由客戶端'拉'。 Gmail仍然可以通過使用定時器來觸發HTTP操作,而不是要求用戶點擊某些內容,從服務器「拉出」數據。所以,它似乎是汽車,但它仍然是客戶端啓動。