Слика ради преко брзе директне везе, али је непотпуна кроз спорији forward прокси. Један могући узрок је да извор затвори везу док се његов одговор још пише.

Netty I/O је асинхрон. Повратак из writeAndFlush не значи да је та операција завршена. Зато је овај редослед несигуран за одговор који још има бајтова у реду:

ctx.writeAndFlush(response);
ctx.close();

Када се HTTP размена намерно затвара после своје последње поруке одговора, прикачите затварање на future тог писања:

ctx.writeAndFlush(finalResponseMessage)
    .addListener(ChannelFutureListener.CLOSE);

Исечак претпоставља да је одговор већ исправно изграђен и уоквирен. За струјно тело користите завршетак његове последње поруке, а не писање заглавља. За трајну HTTP везу не додајте затварање само зато што је одговор завршио.

Испитајте неуспех future-а као део уобичајене обраде грешака у апликацији. Завршетак укључује неуспех и отказивање, па сам завршетак није потврда доставе од прегледача.

Корисно поређење је укупна дужина одговора и исход писања на сваком путу. Прокси може променити време довољно да открије постојећу грешку животног циклуса; његово присуство не доказује да су његов компресор или кеш одбацили бајтове.

Повезани чланци