HTTP到HTTPS代理连接处理-将代码从Netty移植到Armeria

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

我有一些代码目前在Netty中工作,它充当HTTPS代理服务器,因此我们处理
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)));
}