public class WebSocketServerExtensionHandler
extends io.netty.channel.ChannelDuplexHandler
Constructor and Description |
---|
WebSocketServerExtensionHandler(WebSocketServerExtensionHandshaker... extensionHandshakers)
Constructor
|
Modifier and Type | Method and Description |
---|---|
void |
channelRead(io.netty.channel.ChannelHandlerContext ctx,
Object msg) |
protected void |
onHttpRequestChannelRead(io.netty.channel.ChannelHandlerContext ctx,
HttpRequest request)
This is a method exposed to perform fail-fast checks of user-defined http types.
|
protected void |
onHttpResponseWrite(io.netty.channel.ChannelHandlerContext ctx,
HttpResponse response,
io.netty.channel.ChannelPromise promise)
This is a method exposed to perform fail-fast checks of user-defined http types.
|
void |
write(io.netty.channel.ChannelHandlerContext ctx,
Object msg,
io.netty.channel.ChannelPromise promise) |
bind, close, connect, deregister, disconnect, flush, read
channelActive, channelInactive, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggered
ensureNotSharable, handlerAdded, handlerRemoved, isSharable
public WebSocketServerExtensionHandler(WebSocketServerExtensionHandshaker... extensionHandshakers)
extensionHandshakers
- The extension handshaker in priority order. A handshaker could be repeated many times
with fallback configuration.public void channelRead(io.netty.channel.ChannelHandlerContext ctx, Object msg) throws Exception
channelRead
in interface io.netty.channel.ChannelInboundHandler
channelRead
in class io.netty.channel.ChannelInboundHandlerAdapter
Exception
@UnstableApi protected void onHttpRequestChannelRead(io.netty.channel.ChannelHandlerContext ctx, HttpRequest request) throws Exception
eg:
If the user has defined a specific HttpRequest
type i.e.CustomHttpRequest
and
channelRead(io.netty.channel.ChannelHandlerContext, java.lang.Object)
can receive LastHttpContent.EMPTY_LAST_CONTENT
msg
types too, can override it like this:
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg != LastHttpContent.EMPTY_LAST_CONTENT) { if (msg instanceof CustomHttpRequest) { onHttpRequestChannelRead(ctx, (CustomHttpRequest) msg); } else { // if it's handling other HttpRequest types it MUST use onHttpRequestChannelRead again // or have to delegate it to super.channelRead (that can perform redundant checks). // If msg is not implementing HttpRequest, it can call ctx.fireChannelRead(msg) on it // ... super.channelRead(ctx, msg); } } else { // given that msg isn't a HttpRequest type we can just skip calling super.channelRead ctx.fireChannelRead(msg); } }IMPORTANT: It already call
super.channelRead(ctx, request)
before returning.Exception
public void write(io.netty.channel.ChannelHandlerContext ctx, Object msg, io.netty.channel.ChannelPromise promise) throws Exception
write
in interface io.netty.channel.ChannelOutboundHandler
write
in class io.netty.channel.ChannelDuplexHandler
Exception
@UnstableApi protected void onHttpResponseWrite(io.netty.channel.ChannelHandlerContext ctx, HttpResponse response, io.netty.channel.ChannelPromise promise) throws Exception
eg:
If the user has defined a specific HttpResponse
type i.e.CustomHttpResponse
and
write(io.netty.channel.ChannelHandlerContext, java.lang.Object, io.netty.channel.ChannelPromise)
can receive ByteBuf
msg
types too, it can be overridden like this:
public void write(final ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { if (msg != Unpooled.EMPTY_BUFFER && !(msg instanceof ByteBuf)) { if (msg instanceof CustomHttpResponse) { onHttpResponseWrite(ctx, (CustomHttpResponse) msg, promise); } else { // if it's handling other HttpResponse types it MUST use onHttpResponseWrite again // or have to delegate it to super.write (that can perform redundant checks). // If msg is not implementing HttpResponse, it can call ctx.write(msg, promise) on it // ... super.write(ctx, msg, promise); } } else { // given that msg isn't a HttpResponse type we can just skip calling super.write ctx.write(msg, promise); } }IMPORTANT: It already call
super.write(ctx, response, promise)
before returning.Exception
Copyright © 2008–2023 The Netty Project. All rights reserved.