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, readchannelActive, channelInactive, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggeredensureNotSharable, handlerAdded, handlerRemoved, isSharablepublic 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.ChannelInboundHandlerchannelRead in class io.netty.channel.ChannelInboundHandlerAdapterException@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.Exceptionpublic void write(io.netty.channel.ChannelHandlerContext ctx,
Object msg,
io.netty.channel.ChannelPromise promise)
throws Exception
write in interface io.netty.channel.ChannelOutboundHandlerwrite in class io.netty.channel.ChannelDuplexHandlerException@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.ExceptionCopyright © 2008–2023 The Netty Project. All rights reserved.