Сурет жылдам тікелей қосылымда жұмыс істейді, бірақ баяуырақ forward прокси арқылы толық емес келеді. Мүмкін себептердің бірі — бастапқы сервер жауабы әлі жазылып жатқанда қосылымды жабады.

Netty I/O асинхронды. writeAndFlush-тан қайту бұл операцияның аяқталғанын білдірмейді. Сондықтан бұл реттілік кезекте байттары бар жауап үшін қауіпсіз емес:

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

HTTP алмасуы соңғы жауап хабарламасынан кейін әдейі жабылса, жабылуды сол жазудың future-ына тіркеңіз:

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

Фрагмент жауап қазірдің өзінде дұрыс құрылған және фреймделген деп есептейді. Ағындық дене үшін оның соңғы хабарламасының аяқталуын қолданыңыз, тақырыпшалардың жазылуын емес. Тұрақты HTTP қосылымы үшін жауап бітті деп қана жабылуды қоспаңыз.

future сәтсіздігін қолданбаның қалыпты қате өңдеуінің бөлігі ретінде тексеріңіз. Аяқталу сәтсіздік пен жойылуды қамтиды, сондықтан аяқталудың өзі браузерден жеткізу түбіртегі емес.

Пайдалы салыстыру — әр жолдағы жауаптың толық ұзындығы мен жазу нәтижесі. Прокси уақытты қолданыстағы өмірлік цикл қатесін ашатындай өзгерте алады; оның болуы оның компрессоры немесе кэші байттарды тастады деп дәлелдемейді.

Қатысты мақалалар