2017-07-27 102 views
0

我們使用Netty版本4.1.13。我們創建HttpServer,HttpServerInitializer,HttpServerHandler,並通過端口啓動它。當我們從Chrome瀏覽器發出請求時,HttpServerInitializer被調用3次或4次(有時3次,有時4次),並在10秒後再次調用它。當我們通過Microsoft Edge或通過控制檯發出的請求,它會按預期調用一次,HttpServerHandler會處理其餘的。Netty HttpServer Chrome瀏覽器多個請求

我們應該做些什麼來防止HttpServerInitializer的處理不必要的額外requests.We必須連接到初始化器管道會話操作,所以這是一個至關重要的問題我們。

回答

0

HTTP 1瀏覽器的默認行爲是打開多個連接(多少取決於瀏覽器)並行執行請求。像那樣,他們可以並行地檢索像css,js,圖像等資源。

連接數可以配置到瀏覽器中。通常有兩個首選項:主機名的最大連接數和打開的連接的最大總數。

參見:http://www.browserscope.org/?category=network&v=0

所以,當你開始使用Chrome的請求時,它會打開多個連接,即使只使用一個,如果沒有做了這麼多的要求。閒置一個未使用的連接將在幾秒鐘後關閉。

我想這就是爲什麼你看到HttpServerInitializer多次被調用,只是因爲有幾個連接。所以,在服務器端,這很正常,因爲你不知道它是不同的客戶端還是隻有一個有很多連接。

我建議你不要做連接打開的事件昂貴的行動,但只有當你收到一個有效的消息/請求。您的初始化程序應該只在管道上配置必要的處理程序,而這些處理程序應該快速且簡單,而不是別的。

相關問題