ပုံတစ်ပုံသည် မြန်ဆန်သော တိုက်ရိုက်ချိတ်ဆက်မှုတွင် အလုပ်လုပ်သော်လည်း ပိုမိုနှေးကွေးသော forward proxy မှတစ်ဆင့် မပြည့်စုံဖြစ်နေသည်။ ဖြစ်နိုင်သော အကြောင်းရင်းတစ်ခုမှာ မူရင်းက ၎င်း၏ တုံ့ပြန်မှုကို ရေးသားနေစဉ် ချိတ်ဆက်မှုကို ပိတ်လိုက်ခြင်း ဖြစ်သည်။

Netty I/O သည် အချိန်နှင့်တစ်ပြေးညီ မဟုတ်ပါ။ writeAndFlush မှ ပြန်လာခြင်းသည် ထိုလုပ်ဆောင်ချက် ပြီးဆုံးပြီဟု မဆိုလိုပါ။ ထို့ကြောင့် တန်းစီတွင် bytes များ ကျန်ရှိနေသော တုံ့ပြန်မှုအတွက် ဤအစီအစဉ်သည် မလုံခြုံပါ။

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

HTTP ဖလှယ်မှုကို ၎င်း၏ နောက်ဆုံး တုံ့ပြန်မှု မက်ဆေ့ချ်နောက်တွင် ရည်ရွယ်ချက်ရှိရှိ ပိတ်နေပါက ပိတ်ခြင်းကို ထိုရေးသားမှု၏ future နှင့် ချိတ်ပါ။

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

ဤအပိုင်းသည် တုံ့ပြန်မှုကို မှန်ကန်စွာ တည်ဆောက်ပြီး frame ချပြီးဖြစ်သည်ဟု ယူဆသည်။ စီးကြောင်းပုံစံ body အတွက် header ရေးသားခြင်းမဟုတ်ဘဲ ၎င်း၏ နောက်ဆုံး မက်ဆေ့ချ် ပြီးစီးမှုကို အသုံးပြုပါ။ ဆက်လက်တည်ရှိသော HTTP ချိတ်ဆက်မှုအတွက် တုံ့ပြန်မှု ပြီးဆုံးသွားရုံဖြင့် ပိတ်ခြင်းကို မထည့်ပါနှင့်။

future ၏ မအောင်မြင်မှုကို အပလီကေးရှင်း၏ ပုံမှန် အမှားကိုင်တွယ်မှု၏ တစ်စိတ်တစ်ပိုင်းအဖြစ် စစ်ဆေးပါ။ ပြီးစီးမှုတွင် မအောင်မြင်မှုနှင့် ပယ်ဖျက်မှု ပါဝင်သောကြောင့် ပြီးစီးမှုတစ်ခုတည်းသည် ဘရောက်ဇာမှ ပေးပို့မှု လက်ခံဖြတ်ပိုင်း မဟုတ်ပါ။

အသုံးဝင်သော နှိုင်းယှဉ်မှုမှာ လမ်းကြောင်းတစ်ခုစီရှိ တုံ့ပြန်မှု အရှည်အပြည့်နှင့် ရေးသားမှု ရလဒ်ဖြစ်သည်။ ပရောက်စီသည် အချိန်ကို လုံလောက်စွာ ပြောင်းလဲ၍ ရှိပြီးသား သက်တမ်းစက်ဝန်း အမှားကို ဖော်ထုတ်နိုင်သည်။ သို့သော် ၎င်း၏ တည်ရှိမှုက ၎င်း၏ ကွန်ပရက်ဆာ သို့မဟုတ် ကက်ရှ်က bytes များကို လွှင့်ပစ်ခဲ့သည်ဟု သက်သေမပြပါ။

ဆက်စပ်ဆောင်းပါးများ