在 netty 代理中为 gzip deflate 添加通道处理程序

Add channel handler for gzip deflate in netty proxy

在以下文件中: https://github.com/adamfisk/LittleProxy/blob/master/src/main/java/org/littleshoot/proxy/impl/ProxyToServerConnection.java

我需要添加一个 'channel handler' 来压缩 gzip 内容。我不知道如何在没有网络知识的情况下做到这一点。有人能给我指出正确的方向吗?

正如其他人指出的那样,您的代码有点太长了,这让这个网站上的人的生活更加困难,但我想我可以帮助您一点。

对 netty 做一个简单的解释,您收到的每个请求都经过处理程序管道,并且每个请求都有自己的关联管道。

因此,在启动管道的方法中,您应该添加一个用于解压缩的处理程序,在您的情况下:

initChannelPipeline(ChannelPipeline pipeline, HttpRequest httpRequest)

您正在寻找的处理程序是 HttpContentDecompressor or HttpContentCompressor 无论您是要解压缩 gzip 数据还是将其压缩为 gzip(不清楚,因为您说您想压缩 gzip 内容。您应该说 inflate如果它被 gzip 压缩或放气,如果没有压缩。把它想象成一个气球。充气后,它需要更多 space)。

您应该注意在管道中添加处理程序的顺序。

有关更多说明,请参阅 Channel pipeline doc