Package io.netty.handler.codec.http
Class HttpServerUpgradeHandler
java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.handler.codec.MessageToMessageDecoder<I>
io.netty.handler.codec.MessageAggregator<HttpObject,HttpMessage,HttpContent,FullHttpMessage>
io.netty.handler.codec.http.HttpObjectAggregator
io.netty.handler.codec.http.HttpServerUpgradeHandler
- All Implemented Interfaces:
io.netty.channel.ChannelHandler,io.netty.channel.ChannelInboundHandler
A server-side handler that receives HTTP requests and optionally performs a protocol switch if
the requested protocol is supported. Once an upgrade is performed, this handler removes itself
from the pipeline.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceThe source codec that is used in the pipeline initially.static interfaceA codec that the source can be upgraded to.static interfaceCreates a newHttpServerUpgradeHandler.UpgradeCodecfor the requested protocol name.static final classUser event that is fired to notify about the completion of an HTTP upgrade to another protocol.Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
io.netty.channel.ChannelHandler.Sharable -
Constructor Summary
ConstructorsConstructorDescriptionHttpServerUpgradeHandler(HttpServerUpgradeHandler.SourceCodec sourceCodec, HttpServerUpgradeHandler.UpgradeCodecFactory upgradeCodecFactory) Constructs the upgrader with the supported codecs.HttpServerUpgradeHandler(HttpServerUpgradeHandler.SourceCodec sourceCodec, HttpServerUpgradeHandler.UpgradeCodecFactory upgradeCodecFactory, int maxContentLength) Constructs the upgrader with the supported codecs.HttpServerUpgradeHandler(HttpServerUpgradeHandler.SourceCodec sourceCodec, HttpServerUpgradeHandler.UpgradeCodecFactory upgradeCodecFactory, int maxContentLength, boolean validateHeaders) Constructs the upgrader with the supported codecs.HttpServerUpgradeHandler(HttpServerUpgradeHandler.SourceCodec sourceCodec, HttpServerUpgradeHandler.UpgradeCodecFactory upgradeCodecFactory, int maxContentLength, HttpHeadersFactory headersFactory, HttpHeadersFactory trailersFactory) Constructs the upgrader with the supported codecs. -
Method Summary
Modifier and TypeMethodDescriptionprotected voiddecode(io.netty.channel.ChannelHandlerContext ctx, HttpObject msg, List<Object> out) protected booleanDetermines whether the specified upgradeHttpRequestshould be handled by this handler or not.Methods inherited from class io.netty.handler.codec.http.HttpObjectAggregator
aggregate, beginAggregation, closeAfterContinueResponse, finishAggregation, handleOversizedMessage, ignoreContentAfterContinueResponse, isAggregated, isContentLengthInvalid, isContentMessage, isLastContentMessage, isStartMessage, newContinueResponseMethods inherited from class io.netty.handler.codec.MessageAggregator
acceptInboundMessage, channelInactive, channelReadComplete, ctx, handlerAdded, handlerRemoved, isHandlingOversizedMessage, maxContentLength, maxCumulationBufferComponents, setMaxCumulationBufferComponentsMethods inherited from class io.netty.handler.codec.MessageToMessageDecoder
channelReadMethods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggeredMethods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, isSharable
-
Constructor Details
-
HttpServerUpgradeHandler
public HttpServerUpgradeHandler(HttpServerUpgradeHandler.SourceCodec sourceCodec, HttpServerUpgradeHandler.UpgradeCodecFactory upgradeCodecFactory) Constructs the upgrader with the supported codecs.The handler instantiated by this constructor will reject an upgrade request with non-empty content. It should not be a concern because an upgrade request is most likely a GET request. If you have a client that sends a non-GET upgrade request, please consider using
HttpServerUpgradeHandler(SourceCodec, UpgradeCodecFactory, int)to specify the maximum length of the content of an upgrade request.- Parameters:
sourceCodec- the codec that is being used initiallyupgradeCodecFactory- the factory that creates a new upgrade codec for one of the requested upgrade protocols
-
HttpServerUpgradeHandler
public HttpServerUpgradeHandler(HttpServerUpgradeHandler.SourceCodec sourceCodec, HttpServerUpgradeHandler.UpgradeCodecFactory upgradeCodecFactory, int maxContentLength) Constructs the upgrader with the supported codecs.- Parameters:
sourceCodec- the codec that is being used initiallyupgradeCodecFactory- the factory that creates a new upgrade codec for one of the requested upgrade protocolsmaxContentLength- the maximum length of the content of an upgrade request
-
HttpServerUpgradeHandler
public HttpServerUpgradeHandler(HttpServerUpgradeHandler.SourceCodec sourceCodec, HttpServerUpgradeHandler.UpgradeCodecFactory upgradeCodecFactory, int maxContentLength, boolean validateHeaders) Constructs the upgrader with the supported codecs.- Parameters:
sourceCodec- the codec that is being used initiallyupgradeCodecFactory- the factory that creates a new upgrade codec for one of the requested upgrade protocolsmaxContentLength- the maximum length of the content of an upgrade requestvalidateHeaders- validate the header names and values of the upgrade response.
-
HttpServerUpgradeHandler
public HttpServerUpgradeHandler(HttpServerUpgradeHandler.SourceCodec sourceCodec, HttpServerUpgradeHandler.UpgradeCodecFactory upgradeCodecFactory, int maxContentLength, HttpHeadersFactory headersFactory, HttpHeadersFactory trailersFactory) Constructs the upgrader with the supported codecs.- Parameters:
sourceCodec- the codec that is being used initiallyupgradeCodecFactory- the factory that creates a new upgrade codec for one of the requested upgrade protocolsmaxContentLength- the maximum length of the content of an upgrade requestheadersFactory- TheHttpHeadersFactoryto use for headers. The recommended default factory isDefaultHttpHeadersFactory.headersFactory().trailersFactory- TheHttpHeadersFactoryto use for trailers. The recommended default factory isDefaultHttpHeadersFactory.trailersFactory().
-
-
Method Details
-
decode
protected void decode(io.netty.channel.ChannelHandlerContext ctx, HttpObject msg, List<Object> out) throws Exception - Overrides:
decodein classio.netty.handler.codec.MessageAggregator<HttpObject,HttpMessage, HttpContent, FullHttpMessage> - Throws:
Exception
-
shouldHandleUpgradeRequest
Determines whether the specified upgradeHttpRequestshould be handled by this handler or not. This method will be invoked only when the request contains anUpgradeheader. It always returnstrueby default, which means any request with anUpgradeheader will be handled. You can override this method to ignore certainUpgradeheaders, for example:@Override protected boolean isUpgradeRequest(HttpRequest req) { // Do not handle WebSocket upgrades. return !req.headers().contains(HttpHeaderNames.UPGRADE, "websocket", false); }
-