2009-10-29 85 views

回答

2

使用

Reverse AJAX

反向阿賈克斯指的是使用長期的HTTP連接 使web服務器和 瀏覽器之間低延遲通信 一個Ajax設計 模式。基本上它是 從客戶端向服務器發送數據的一種方式,並且 是用於將服務器數據 推回到瀏覽器的機制。

Comet (programming)

在web開發,彗星是 新詞來描述一個web 應用模型,其中一個長期持有 HTTP請求允許Web服務器向 推送數據到一個瀏覽器,沒有 瀏覽器明確要求它。彗星是用於實現這種 交互的多個 技術的總稱。所有這些方法都依賴 默認情況下在 瀏覽器中包含的功能,例如JavaScript,而非 而非非默認插件。

+0

所以你說服務器會在窗口關閉時立即注意到缺少HTTP連接?反向AJAX連接是否必須輪詢服務器以保持連接打開?如果是這樣,它不完全回答這個問題... – 2009-10-29 04:57:33

+0

我有一個LAMP堆棧。反向AJAX可能與LAMP? (假設有大量訪問者) – chris 2009-10-29 04:57:39

+0

是的,使用LAMP可以實現反向AJAX。 – 2009-10-29 04:59:07

1

您可以使用javascript on_exit事件來觸發ajax事件,使用跟蹤器打開彈出窗口或執行其他類似操作。這些僅在用戶點擊離開您的頁面時纔有效,而不是關閉窗口。

4

在其他答案中提出的技術解決方案是好的,只要他們去,但我不知道他們如何回答底層問題。

現在,我有4個Safari窗口打開,總共有17個選項卡;和一個Goggle Chrome瀏覽器,有4個標籤。不確定爲什麼我目前沒有打開任何Firefox(可能只是在最近升級到3.5.4後忘記重新啓動它),但通常會有2-3個窗口與另外的8-10個選項卡。我是否仍然在觀看這30頁左右的網頁 - 同時......?從技術上講,我想每個基於編程的解決方案都會說,爲什麼,當然是,我......這對你有什麼意義嗎?!

在現實生活中,我可以(也許,除非我在我的電腦上的其他人再做事)將在給定時間瀏覽這些網頁之一 - 也許2-3,如果我有多個或非常大屏幕,但通常情況下,1是現實生活中合理的答案。哪一個?如果沒有大量的Javascript魔法,你不會發現 - 如果那樣的話。

這是一個很難的問題,添加奇怪的約束而不是具有魔法的Javascript定期告訴服務器「我仍然打開,它看起來像用戶正在查看我[[一些交互發生在最後XX秒,或...]]「vs」我打開了,但我懷疑我在後臺,或者用戶離開瀏覽器打開瀏覽器的午餐,因爲自從YYY幾秒前沒有互動「vs」我正在離開來自」(沒有消息意味着整個瀏覽器崩潰或東西) - 補充說,奇怪的約束基本上確保問題是完全不溶於

如果你真的關心關於用戶是否實際上是查看的頁面,從Javascript回到服務器的週期性的每隔幾秒的Ajax交互是一個微不足道的代價,而且是你的問題中最小的問題,如果你不真正關心,那當然是不同的,也許告訴我們什麼是實際問題你真的想要解決 ... ?!

+0

這是一個社交網絡 - 所以重要的是要知道這個人目前是否「可用」 – chris 2009-10-29 05:38:00

+0

@chris,所以網頁是否仍然在一個被深深埋在窗口中被遺忘的標籤中打開並不真正有意義 - 所以你需要JS magic-wannabe **和**,因此,不可避免地,JS會定期或根據需要向服務器發送狀態更新(並且服務器必須注意自從JS最後一次發送它爲「用戶實際上**活動**在這個頁面上「狀態更新)。 – 2009-10-29 05:52:22

1

最簡單的(而且他在流量方面最輕量級)可以跟蹤頁面上的mousemove/keyup事件。例如,在鼠標上次移動1分鐘之內,您可以確定用戶實際上正在網站上做某些事情(例如,不會在午餐時間讓您的窗戶打開)。

相關問題