Добавьте обработчик канала для gzip deflate в прокси netty

В следующем файле: https://github.com/adamfisk/LittleProxy/blob/master/src/main/java/org/littleshoot/proxy/impl/ProxyToServerConnection.java

Мне нужно добавить "обработчик канала", который будет дефлировать сжатый контент. Я понятия не имею, как это сделать, не имея знания нетто. Кто-нибудь может дать мне точку в правильном направлении?

1 ответ

Решение

Как отмечали другие, ваш код слишком длинный и усложняет жизнь людей на этом сайте, но я думаю, что смогу вам немного помочь.

Чтобы дать небольшое объяснение о netty, каждый полученный вами запрос проходит через конвейер обработчиков, и каждый запрос имеет свой собственный конвейер, связанный с ним.

Так что именно в методе, инициирующем ваш конвейер, вы должны добавить обработчик для декомпрессии, в вашем случае:

initChannelPipeline(ChannelPipeline pipeline, HttpRequest httpRequest)

Нужный обработчик - это либо HttpContentDecompressor, либо HttpContentCompressor, независимо от того, пытаетесь ли вы распаковать сжатые данные или сжать их в gzip (неясно, как вы говорите, хотите ли вы дефлировать контент gzip. Вы должны сказать, надуть его, если он распакован, или спустить его. если не сжат. Думайте об этом как о воздушном шаре. Когда надут, это занимает намного больше места).

Вы должны обратить внимание на порядок, в котором вы добавляете ваши обработчики в конвейер.

См. Channel pipe doc для более подробного объяснения.

Другие вопросы по тегам