Şəkil sürətli birbaşa bağlantıda işləyir, lakin daha yavaş forvard proksidən keçəndə natamam olur. Mümkün səbəblərdən biri mənbənin cavabı hələ yazılarkən bağlantını bağlamasıdır.

Netty G/Ç asinxrondur. writeAndFlush-dan qayıtmaq bu əməliyyatın tamamlandığı anlamına gəlmir. Buna görə bu ardıcıllıq hələ növbədə baytları olan cavab üçün təhlükəsiz deyil:

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

HTTP mübadiləsi son cavab mesajından sonra qəsdən bağlanırsa, bağlanmanı həmin yazının future-una əlavə edin:

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

Fraqment cavabın artıq düzgün qurulduğunu və kadrlandığını fərz edir. Axın şəklində body üçün başlıqların yazılmasını deyil, son mesajın tamamlanmasını istifadə edin. Davamlı HTTP bağlantısı üçün yalnız cavab bitdiyi üçün bağlanma əlavə etməyin.

Future-un uğursuzluğunu tətbiqin normal xəta idarəetməsinin bir hissəsi kimi yoxlayın. Tamamlanma uğursuzluğu və ləğvi də əhatə edir, ona görə tamamlanma təkbaşına brauzerdən çatdırılma qəbzi deyil.

Faydalı müqayisə hər yolda cavabın tam uzunluğu və yazma nəticəsidir. Proksi vaxtı kifayət qədər dəyişərək mövcud həyat dövrü xətasını üzə çıxara bilər; onun olması kompressorunun və ya keşinin baytları atdığını sübut etmir.

Əlaqəli məqalələr