2010-12-15 159 views
4

我有一個關於ajax的非常簡單的問題。 如果我想刷新我網站的某個特定區域,我會使用ajax是最好的方法。Ajax簡單問題

但無論如何,而不是有一個JavaScript定期檢查服務器上的變化,服務器將發送數據時,一個給定的事件會發生?

我想要的是客戶端不需要定期發送請求,而是服務器只會將信息發送到客戶端,而客戶端又會有某種事件監聽器。

在此先感謝

+0

請讓我們知道這個問題的答案是什麼,如果可以做到這一點,非常有趣的問題。 – 2010-12-15 14:02:05

+0

@Gathath Serhal:這是你的答案。 – DOK 2010-12-15 14:11:21

回答

1

是的,這可以做到。它被稱爲「推送」或「推送流」。

下面是一個網站,提供了這樣做的能力:InstantPush。而從他們的主頁的簡短報價:。

「InstantPush用來使網頁 和手機去住他們將 瞬間就被時實時 改變在服務器端發生更新 標準的Web通信使得 更新在客戶端通過防火牆和代理。 沒有任何模塊 身邊!

InstantPush已經使用自2001年以來, 「阿賈克斯的發明」之前,它是 可能是第阿賈克斯推 框架。

InstantPush是領先的 北歐市場「

這裏是另一家公司提供這種技術:LightStreamer而從它們的首頁報價:

」。Lightstreamer是一個可擴展以及用於將實時數據推送到富Internet應用程序的可靠服務器

基於Comet和Real-Time Web 範例, al-time數據 到任何Web瀏覽器和客戶端 應用程序。 Silverlight,Java,.NET,iOS,Android, 和BlackBerry應用程序,可以 輕鬆從 Lightstreamer服務器接收實時數據。

Lightstreamer已在許多 關鍵任務生產系統中使用,其中 可擴展性,較低的網絡影響, 帶寬管理,自適應 流媒體等先進 特點,已被證明根本。「

0

使用傳統的HTTP這是不可能的。但是,您可以使用long polling或其兄弟之一來模擬推送行爲。

1

由於http協議通過發送請求並從服務器接收響應而工作,因此服務器在未收到請求的情況下不能響應。

0

這確實是一個困難的問哪裏的服務器廣播/將數據推送到客戶端,而被請求。HTTP是無狀態的,即使瀏覽器是註冊客戶端時,它仍然需要既可以通過代碼或通過像一些標籤要求元刷新。新的,但仍然不太穩定選項是彗星或WebSockets的。

答案是彗星,而不是WebSockets的是的,這是可能的。 另一種方法是使用瀏覽器插件。

這是一個除了來自維基Push Technology

* Apple Push Notification Service 
* BOSH 
* Comet 
* Client–server model 
* File transfer 
* Pull technology 
* Push Access Protocol 
* Push e-mail 
* Reverse Ajax 
* Streaming media 
* WebSockets 
0

不能這樣做。服務器的工作是提供請求的結果,這是一開始就必須的。

0

我認爲websockets是要走的路,但尚未支持所有瀏覽器。

我用它們與紅寶石和鉻,很容易。