ایک تصویر تیز براہ راست کنکشن پر کام کرتی ہے، لیکن سست فارورڈ پراکسی کے ذریعے نامکمل آتی ہے۔ ایک ممکنہ وجہ یہ ہے کہ ماخذ کنکشن بند کر دیتا ہے جب اس کا جواب ابھی لکھا جا رہا ہوتا ہے۔

Netty I/O غیر ہم وقت ہے۔ writeAndFlush سے واپسی کا مطلب یہ نہیں کہ وہ عمل مکمل ہو گیا۔ اس لیے قطار میں ابھی بائٹس رکھنے والے جواب کے لیے یہ ترتیب محفوظ نہیں:

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

جب HTTP تبادلہ اپنے آخری جوابی پیغام کے بعد جان بوجھ کر بند ہو رہا ہو، تو بندش کو اس تحریر کے future سے منسلک کریں:

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

یہ حصہ فرض کرتا ہے کہ جواب پہلے ہی درست طریقے سے بنایا اور فریم کیا جا چکا ہے۔ اسٹریم شدہ باڈی کے لیے ہیڈر لکھنا نہیں، بلکہ اس کے آخری پیغام کی تکمیل استعمال کریں۔ مستقل HTTP کنکشن کے لیے، صرف اس لیے بندش شامل نہ کریں کہ جواب ختم ہو گیا۔

future کی ناکامی کو ایپلیکیشن کی معمول کی غلطی کے انتظام کے حصے کے طور پر جانچیں۔ تکمیل میں ناکامی اور منسوخی دونوں شامل ہیں، اس لیے صرف تکمیل براؤزر سے ترسیل کی رسید نہیں۔

مفید موازنہ ہر راستے پر جواب کی مکمل لمبائی اور تحریر کا نتیجہ ہے۔ پراکسی وقت کو کافی حد تک بدل سکتی ہے کہ موجودہ لائف سائیکل خرابی سامنے آ جائے؛ اس کی موجودگی یہ ثابت نہیں کرتی کہ اس کے کمپریسر یا کیش نے بائٹس پھینک دیے۔

متعلقہ مضامین