2013-02-08 74 views
0

一分錢拍賣網站,有這種情況發生隨着時間的推移,即一些基本要求:在一分錢拍賣網站上投票嗎?

  • 招標請求(當有人放置一個出價)
  • 定時更新
  • 領先的投標人更新

我想了解長輪詢更好一點,我堅持這一點。據我所知,長輪詢是爲了減少Ajax請求。即只有一個用於視覺更新,另一個用於行動。因此,因此:

  1. 投標請求(投標)將保持不變,但所有視覺更新請求將合併爲一個「長投票」請求,對不對?
  2. 如果用戶第一次連接到網站,他將通過傳遞他最後告訴頁面狀態的內容來請求頁面的當前狀態。服務器會將它與應該的狀態進行比較,如果它們不同,它會將新狀態傳遞給用戶,對嗎?
  3. 當回到狀態時,長輪詢將有效停止,屏幕將被更新,並且一個新的長輪詢將被啓動,是否正確?

到目前爲止,這種理解是否正確?

如果是這樣,如果服務器仍然需要比較狀態,這將如何減少對後端請求的數量?

如果一個用戶在50個不同的窗口中打開該頁面,這會有什麼幫助?

回答

1

長輪詢用於模擬服務器將數據推送到客戶端的連接(而不是實際發生的事情 - 客戶端從服務器請求信息)。基本上,客戶端向服務器請求數據,而不是立即返回數據給客戶端,服務器'保存'請求打開 - 然後它可以在稍後的時間點將數據返回給客戶端 - 可以用來模擬服務器更新客戶在'實時'。

因此,在您的拍賣網站的示例中,客戶端可能會長時間輪詢服務器的物品出價金額 - 服務器會將此請求保留爲打開狀態,並且當該物品的出價值更改時可以將更新的金額返還給客戶端......這可以用來給出服務器更新客戶端的印象,因爲出價金額發生了變化。

就請求到服務器去,這非常取決於如何實現。顯然,使用長輪詢會減少對服務器的請求數量,例如,讓客戶端每秒發出一個新的「標準」請求來檢查更新。客戶端的多個實例仍然會導致對服務器的多重請求 - 此外,服務器仍然需要處理打開長輪詢請求的開銷,並在適當的時候響應這些請求。顯然不同的服務器和服務器體系結構這比其他更有效。

+0

但是如何與服務器同步時間?每隔幾秒鐘,客戶必須知道拍賣時間是什麼(就像便士拍賣會增加拍賣等)? – coderama 2013-02-08 11:54:35

+1

在這種情況下,當服務器發現相關拍賣時間已增加時,您可以讓服務器更新客戶端(通過向長輪詢請求發送響應)。 – Michael 2013-02-08 12:13:39