2013-02-28 30 views
1

長時間輪詢已經解決了我99%的問題。現在只有一個其他問題。想象一下,一個便士拍賣網站,人們出價。在首頁上,有幾個拍賣。長輪詢阻塞多個窗口?

如果用戶打開這三個拍賣,因爲JavaScript是不是多線程的,你怎麼會得到其他頁面永遠載入?他們會不會總是陷入困境,因爲他們在等待長時間投票結束而無法加載?在實踐中,我已經體驗過這一點,我想不出一個辦法。有任何想法嗎?

+0

您需要設置一個特定的輪詢服務器,以便您不會遇到連接限制問題並查看腳本標記輪詢。不是說這是一個答案,但它可以幫助你解決你所看到的問題。 – 2013-03-07 16:42:46

回答

0

有兩種方法的JavaScript得到周圍一些這方面。

  1. 儘管javascript在概念上是單線程的,但它在使用完成處理程序的單獨線程中執行其io。這意味着您在等待網絡請求完成時可以運行其他JavaScript腳本。
  2. 的Javascript針對各頁(或在每個頁面的每個偶數幀)被從Javascript隔絕在其他網頁/幀。這意味着每個javascript副本都可以在自己的線程中運行。

對您而言,更大的問題可能是瀏覽器經常限制併發連接到給定站點的數量,而且聽起來好像您想要同時連接到同一站點。在這種情況下,你會得到一個鎖定。

如果您同時控制服務器和客戶端,則需要將來自客戶端的多個長輪詢請求合併到服務器的單個長輪詢請求中。