0

我正在使用window.EventSource將數據流式傳輸到表視圖的應用程序。由於每個服務器的最大連接數限制爲6,我想在給定的時間點有一個EventSource對象,所以從根本上來說我需要關閉第二個onopen方法上的第一個事件源對象然後第二個onmessage事件將數據流傳送到表視圖。考慮下面的代碼上的onclick事件運行,關閉第一個eventsource上的第二個onopen方法

if(firstEventSource) { 
    firstEventSource.close(); 
} 
var firstEventSource = new window.EventSource(endPoint); 
firstEventSource.onmessage = function (evt) { 
    //... code goes here 
} 

上面的代碼工作,但正如我所說,而非直接關閉firstEventSource,我需要通過確保第二個事件已經打開它的連接將其關閉。

+0

max-connections-per-server是瀏覽器可以連接到服務器的最大連接數。我沒有看到你的問題如何到達那裏?爲什麼你不能只使用一個'EventSource'? – baynezy

+0

@baynezy當我說最大連接數時,它是活動連接的最大數目。正如我在查詢中提到的那樣,我在onclick事件處理函數內部具有該函數,然後如果我要爲每次點擊創建新的window.EventSource對象,那麼它不允許我去超過6個。此處的「endPoint」將流從服務器連續發送數據。 – Sai

回答

0

請勿使用多個EventSource。使用一個使用命名事件,而不是http://cjihrig.com/blog/the-server-side-of-server-sent-events/

通過這種方式創建一個EventSource然後調用API到你的服務器的onclick改變單一EventSource的配置。

+0

感謝分享網址。在我的場景中,我有這個端點,我需要從文本框中追加一個查詢,像這樣,var firstEventSource = new window.EventSource(endPoint +'?lastEventId = 0&s ='+ $ scope.values);其中$ scope.values是一個數組...所以只是想知道在這種情況下,如果我要使用一個EventSource,然後如果我不得不改變它的配置(在這種情況下,端點)。我該怎麼做......任何例子都會有很大的幫助。 – Sai

+0

所以我的意思是你有一個EventSource,但是你可以對你的服務器進行AJAX調用,這些可以包括你提到的查詢參數。使用它來改變現有EventSource從那一點開始的行爲。在不斷破壞和建立聯繫方面沒有價值。 – baynezy

相關問題