HTTP到HTTPS代理连接处理-将代码从Netty移植到Armeria
我有一些代码目前在Netty中工作,它充当HTTPS代理服务器,因此我们处理HTTP到HTTPS代理连接处理-将代码从Netty移植到Armeria,netty,armeria,Netty,Armeria,我有一些代码目前在Netty中工作,它充当HTTPS代理服务器,因此我们处理CONNECT方法,并在管道中动态添加SSL处理程序: // SimpleChannelInboundHandler<FullHttpRequest> @Override protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest msg) { if (HttpMethod.CONNECT.equals(msg.me
CONNECT
方法,并在管道中动态添加SSL处理程序:
// SimpleChannelInboundHandler<FullHttpRequest>
@Override
protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest msg) {
if (HttpMethod.CONNECT.equals(msg.method())) { // HTTPS proxy
SslContext sslContext = Utils.getSslContext();
SslHandler sslHandler = sslContext.newHandler(ctx.alloc());
FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, CONNECTION_ESTABLISHED);
response.headers().set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE);
ctx.writeAndFlush(response).addListener(l -> ctx.channel().pipeline().addFirst(sslHandler));
// do NOT close channel
return;
} else {
// other stuff
}
}
任何提示都将不胜感激 不幸的是,Armeria不允许用户
HttpService
处理CONNECT
方法。当该功能可用时,请注意获得通知。不幸的是,Armeria不允许用户HttpService
处理CONNECT
方法。请注意在功能可用时获得通知
// HttpService
@Override
public HttpResponse serve(ServiceRequestContext ctx, HttpRequest req) throws Exception {
return HttpResponse.from(req.aggregate().thenApply(ahr -> MyServer.handle(ahr)));
}