2009-09-29 93 views
3

我有一個小問題,因爲我的WEB開發技能不是最急劇的,我希望你能幫助我。如何同步兩個瀏覽器

問題是我正在開發一個數字SCRUM任務板,其中一個核心功能是打開相同項目任務板的瀏覽器必須顯示相同的圖片。因此,如果人員A移動任務人員B,他應該在他的瀏覽器中看到這一點,而不必手動刷新網頁。

我知道高達毫秒的同步是不可能的,因爲那樣會殺死網絡連接。但是每30秒一次就會很好。除非你可以推送消息。

項目移動的表示不是問題,因爲我可以很容易地使其閃爍。 我需要瀏覽器服務器的幫助 - 通信。 B人的瀏覽器如何知道有什麼變化。它是否真的像擁有一個計時器一樣簡單,並且會針對任何更改而單獨查詢JSON服務。還是有辦法將更改推送到瀏覽器?

回答

10

你想看看Comet

Web開發,彗星是一個 新詞來描述Web 應用模型,其中一個長期持有的 HTTP請求允許web服務器 推送數據到瀏覽器,而不 瀏覽器明確要求它。

這會讓你得到你想要的即時響應。有幾個JavasScript框架內置了對它的支持 - 你選擇哪一個取決於你正在使用的內容,你對每一個的熟悉程度等等。Dojo是我之前使用過的,它工作得很好。

-1

是的,這是標準的AJAX實踐 - A是'異步',這意味着您在後臺啓動XMLHttpRequest以檢查狀態,然後在必要時更新頁面。

您無法'推送'到瀏覽器。

+0

http://ajaxian.com/archives/comet-a-new-approach-to-ajax-applications – Steerpike 2009-09-29 12:03:38

+0

您可以通過保持連接處於打開狀態並保持活動狀態來「推送」瀏覽器。當然有限制,但它確實可以讓你有效地推送內容。 – davewasthere 2009-09-29 12:05:10

0

可以打開一個拉連接,它可以有效地將內容推送到瀏覽器,但輪詢的想法是最簡單的。

你的民意調查只需要看最後一次更新是什麼時候,如果它比它所知道的更新更新,那麼它可以下載整個更新。

保持簡單。你不會犯太多錯誤。

+0

如果您想了解更多關於「推送」到瀏覽器的信息,請查看以下文章中的Long Polling。 http://en.wikipedia.org/wiki/Push_technology – davewasthere 2009-09-29 12:03:52

0

假設人員移動任務意味着更改反映在數據庫中,您只需設置一個JavaScript時間間隔(setInterval(function,timeInMs))來輪詢使用AJAX的後端腳本,該腳本將返回新的州。

4

有三種技術來實現這一目標:

  • 短輪詢:瀏覽器發送Ajax請求每x秒,並立即得到響應
  • 長輪詢:瀏覽器發送Ajax請求,並等待響應,同時不超時,則發送另一個請求
  • 閃光燈插座:使用Flash應用程序的持續性與服務器端應用程序
+0

如果你要建議閃存套接字,那麼你可以添加Java/Silverlight的混合以及。 :-) – davewasthere 2009-09-29 12:07:36

+0

我無法將Silverlight添加到建議中,因爲它在Linux平臺中不受支持。 – Anatoliy 2009-12-09 08:42:19