netty server如何通过一个端口同时支持Http和Https协议?

How does netty server supports both Http and Https protocols with a single port?

我们知道,我们提供http service监听80端口,https service监听443端口。我们为什么不在一个端口上提供两种服务呢?具体原因是什么?以及netty服务器是如何通过一个端口同时支持Http和Https协议的?

您可以这样做,但我认为这是个坏主意,因为两个端口都针对 http 或 https 进行了明确定义。也就是说,如果您真的想这样做,您可以根据消息的前 5 个字节检测是否使用了 SSL,然后即时注入 SSL 处理程序。

Netty 本身包含 OptionalSslHandler,它为您做的就是:

https://github.com/netty/netty/blob/netty-4.1.32.Final/handler/src/main/java/io/netty/handler/ssl/OptionalSslHandler.java