2011-02-28 83 views
0

閱讀完這個post(可能通過查看圖像可以得到要點,不需要閱讀全文),我很難決定需要哪個點在comet型技術的幫助下。 它看起來(天真)我可以通過使用Ajax請求和數據庫檢索幾個版本來完成所有這些。真的嗎?。實時操作轉換和協作

也許我錯過了一些東西,所以澄清會很好。

UPDATE: 鑑於安德魯寫的有用的答案,他說,一個Ajax方法這個問題是不及時,我不知道爲什麼,就是,在該階段由服務器發送到客戶端的響應會產生一個延遲?

回答

1

Comet IS Ajax請求。

爲了讓服務器能夠將通知推送到用戶瀏覽器(IE隨時可以看到服務器在圖表中發送更改),用戶需要已經與服務器建立連接。使用ajax長輪詢等來維持該連接的方法是彗星術語所指的。

是的,您可以通過每x秒發送一次Ajax請求來實現此目的。但這很浪費,而且不及時。

[編輯]

當我說這是不及時的,我說那是什麼,使用一個AJAX調用上的間隔更新將有什麼那間隔的延遲。 服務器無法向客戶端發送更新。它只能回答來自客戶的請求。所以如果服務器獲得新的信息,它必須坐在它上面,直到所有客戶端回來並要求更新。在這種情況下,人們可以編輯相同的信息並同時提交,這需要由服務器處理,而這正是本文要解決的問題。使用彗星框架只會減少發生這種情況的可能性,因爲不同的客戶端會更好地同步。

+0

@Andrew:謝謝你的回答。我曾考慮過使用Ajax Push服務(APE或pusherapp)。這改變了這種方式的實施方式?顯然,我不想每隔x秒發送一次ajax請求,相反,這些請求應該在用戶觸發特定操作時開始。 – 2011-02-28 18:52:57

+0

不,APE或任何其他彗星實現將執行的操作是在用戶加載頁面(或文檔案例中的文檔)時與服務器建立連接,然後就坐在那裏。當用戶在本地進行更改時,可以使用ajax將其發送到服務器,當遠程用戶進行更改時,服務器將完成坐在那裏的請求並且將更新本地用戶。這篇文章根本不是在談論這個問題,它只是解釋如何在異步修改的情況下保持文檔的狀態,它期望讀者能夠實現通信。 – Andrew 2011-02-28 20:22:33

+0

@ Andrew:對。我知道這篇文章沒有提到這一點,但我想知道APE(例如)是否可以用來幫助實施。 – 2011-02-28 23:08:40