Java 类io.netty.handler.codec.http.HttpServerUpgradeHandler 实例源码
项目:armeria
文件:HttpServerPipelineConfigurator.java
private void configureHttp1WithUpgrade(ChannelHandlerContext ctx) {
final ChannelPipeline p = ctx.pipeline();
final HttpServerCodec http1codec = new HttpServerCodec(
config.defaultMaxHttp1InitialLineLength(),
config.defaultMaxHttp1HeaderSize(),
config.defaultMaxHttp1ChunkSize());
String baseName = name;
baseName = addAfter(p, baseName, http1codec);
baseName = addAfter(p, baseName, new HttpServerUpgradeHandler(
http1codec,
protocol -> {
if (!AsciiString.contentEquals(Http2CodecUtil.HTTP_UPGRADE_PROTOCOL_NAME, protocol)) {
return null;
}
return new Http2ServerUpgradeCodec(
newHttp2ConnectionHandler(p));
},
UPGRADE_REQUEST_MAX_LENGTH));
addAfter(p, baseName, new Http1RequestDecoder(config, ctx.channel(), SCHEME_HTTP));
}
项目:jooby
文件:NettyHandler.java
@Override
public void userEventTriggered(final ChannelHandlerContext ctx, final Object evt)
throws Exception {
// Idle timeout
if (evt instanceof IdleStateEvent) {
log.debug("idle timeout: {}", ctx);
ctx.close();
} else if (evt instanceof HttpServerUpgradeHandler.UpgradeEvent) {
// Write an HTTP/2 response to the upgrade request
FullHttpRequest req = ((HttpServerUpgradeHandler.UpgradeEvent) evt).upgradeRequest();
req.headers().set(STREAM_ID, req.headers().get(STREAM_ID, "1"));
channelRead0(ctx, req);
} else {
super.userEventTriggered(ctx, evt);
}
}
项目:JavaAyo
文件:HelloWorldHttp2Handler.java
/**
* Handles the cleartext HTTP upgrade event. If an upgrade occurred, sends a simple response via HTTP/2
* on stream 1 (the stream specifically reserved for cleartext HTTP upgrade).
*/
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof HttpServerUpgradeHandler.UpgradeEvent) {
// Write an HTTP/2 response to the upgrade request
Http2Headers headers =
new DefaultHttp2Headers().status(OK.codeAsText())
.set(new AsciiString(UPGRADE_RESPONSE_HEADER), new AsciiString("true"));
encoder().writeHeaders(ctx, 1, headers, 0, true, ctx.newPromise());
}
super.userEventTriggered(ctx, evt);
}
项目:netty-cookbook
文件:Http2ServerInitializer.java
/**
* Configure the pipeline for a cleartext upgrade from HTTP to HTTP/2.
*/
private static void configureClearText(SocketChannel ch) {
HttpServerCodec sourceCodec = new HttpServerCodec();
HelloWorldHttp2Handler http2Handler = new HelloWorldHttp2Handler();
HttpServerUpgradeHandler.UpgradeCodec upgradeCodec = new Http2ServerUpgradeCodec(http2Handler);
HttpServerUpgradeHandler upgradeHandler = new HttpServerUpgradeHandler(sourceCodec, Collections.singletonList(upgradeCodec), 65536);
ch.pipeline().addLast(sourceCodec);
ch.pipeline().addLast(upgradeHandler);
ch.pipeline().addLast(new UserEventLogger());
}
项目:carbon-transports
文件:HTTP2SourceHandler.java
/**
* This method handles the cleartext HTTP upgrade event. If an upgrade occurred, sends a simple response via HTTP/2
* on stream 1 (the stream specifically reserved for cleartext HTTP upgrade).
*
* @param ctx Channel context
* @param evt Event
* @throws Exception Throws when user event trigger has an error
*/
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof HttpServerUpgradeHandler.UpgradeEvent) {
// Write an HTTP/2 response to the upgrade request
Http2Headers headers =
new DefaultHttp2Headers().status(OK.codeAsText())
.set(new AsciiString(Constants.UPGRADE_RESPONSE_HEADER), new AsciiString("true"));
encoder().writeHeaders(ctx, 1, headers, 0, true, ctx.newPromise());
}
super.userEventTriggered(ctx, evt);
}
项目:jooby
文件:NettyPipeline.java
private void h2cOrHttp1(final ChannelHandlerContext ctx) {
ChannelPipeline p = ctx.pipeline();
HttpServerCodec http1codec = http1Codec();
String baseName = name;
baseName = addAfter(p, baseName, "codec", http1codec);
baseName = addAfter(p, baseName, "h2upgrade",
new HttpServerUpgradeHandler(http1codec, protocol -> {
if (!AsciiString.contentEquals(Http2CodecUtil.HTTP_UPGRADE_PROTOCOL_NAME, protocol)) {
return null;
}
return new Http2ServerUpgradeCodec(newHttp2ConnectionHandler(p));
}, maxContentLength));
}