Netty HttpServer Chrome 浏览器多个请求

Netty HttpServer Chrome Browser Multiple Requests

我们使用 Netty,版本 4.1.13。我们创建 HttpServer、HttpServerInitializer、HttpServerHandler 并通过使用 port.When 启动它 我们从 Chrome 浏览器发出请求,HttpServerInitializer 被调用 3 或 4 次(有时 3 次,有时 4 次),然后再次调用它10 seconds.When 我们通过 Microsoft Edge 或控制台发出请求,它按预期被调用一次,其余的由 HttpServerHandler 处理。

我们应该如何防止 HttpServerInitializer 处理不必要的额外操作requests.We 会话操作附加到 Initializer 上的管道,所以这对我们来说是一个关键问题。

HTTP 1 浏览器的默认行为是打开多个连接(多少取决于浏览器)以并行执行请求。这样,他们可以并行检索 css、js、图像等资源。

连接数可配置到浏览器中。通常有两个首选项:主机名的最大连接数和打开的最大连接数。

另请参阅:http://www.browserscope.org/?category=network&v=0

因此,当您使用 Chrome 启动请求时,它会打开多个连接,即使在没有完成那么多请求的情况下它只使用一个连接也是如此。空闲和未使用的连接将在几秒后关闭。

我想这就是为什么您看到 HttpServerInitializer 被多次调用的原因,只是因为存在多个连接。所以,服务器端,这是正常的,因为你不知道它是不同的客户端还是只有一个有很多连接。

我建议您不要对 Connection Opened 事件进行代价高昂的操作,只有当您收到有效的 message/request 时才这样做。你的初始化程序应该只在管道上配置必要的处理程序,这应该是快速和简单的,没有别的。