2017-07-27 5 views
0

Wir verwenden Netty, Version 4.1.13. Wir erstellen HttpServer, HttpServerInitializer, HttpServerHandler und starten es über einen Port.Wenn wir eine Anfrage von Chrome Browser, HttpServerInitializer wird 3 oder 4 mal aufgerufen (manchmal 3, manchmal 4) und es wird nach 10 Sekunden aufgerufen. Wenn wir machen Eine Anfrage über Microsoft Edge oder über die Konsole wird wie erwartet einmal aufgerufen und HttpServerHandler erledigt den Rest.Netty HttpServer Chrome Browser Mehrere Anfragen

Was sollten wir tun, um zu verhindern, dass HttpServerInitializer unnötige zusätzliche Anforderungen bearbeitet.Wir haben Sitzungsoperationen an die Pipeline des Initialisierers angehängt, daher ist dies ein kritisches Problem für uns.

Antwort

0

Das Standardverhalten von Browsern für HTTP 1 besteht darin, mehrere Verbindungen (wie viele vom Browser abhängig sind) zu öffnen, um Anfragen parallel auszuführen. So können sie Ressourcen wie css, js, images, ... parallel abrufen.

Die Anzahl der Verbindungen ist im Browser konfigurierbar. Im Allgemeinen gibt es zwei Einstellungen: die maximale Anzahl der Verbindungen nach Hostnamen und die maximale Anzahl der geöffneten Verbindungen. auch

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

Also, wenn Sie eine Anfrage mit Chrome starten, mehrere Verbindungen öffnet, auch wenn es nur eine verwenden, wenn es nicht so viel Anfrage getan ist. Die ungenutzten Verbindungen werden nach einigen Sekunden geschlossen.

Ich denke, deshalb sehen Sie den HttpServerInitializer mehrmals aufgerufen wird, nur weil es mehrere Verbindungen gibt. Also, Server-Seite, es ist normal, weil Sie nicht wissen, ob es andere Clients oder nur eine mit vielen Verbindungen ist.

Ich rate Ihnen, keine kostspielige Operation auf Connection Opened-Ereignis zu tun, sondern nur, wenn Sie eine gültige Nachricht/Anfrage erhalten. Ihr Initialisierer sollte nur die erforderlichen Handler in der Pipeline konfigurieren, die schnell und einfach sein sollten, und sonst nichts.

Verwandte Themen