WebSocket ပေါ်ပေါက်လာခြင်းနှင့် ရည်ရွယ်ချက်
အရင်တုန်းက HTTP ကို အသုံးပြုပြီး Real-time လိုမျိုး လုပ်ဆောင်ဖို့ ကြိုးစားခဲ့တဲ့ နည်းလမ်းဟောင်းတွေ (Polling, Long Polling) မှာ အားနည်းချက်တွေ ရှိနေတာကြောင့် WebSocket ဆိုတဲ့ Protocol အသစ်တစ်ခု ပေါ်ပေါက်လာဖို့ တွန်းအားဖြစ်စေခဲ့ပါတယ်။
WebSocket ဘယ်အချိန် ဘာကြောင့် ပေါ်လာတာလဲ?
Section titled “WebSocket ဘယ်အချိန် ဘာကြောင့် ပေါ်လာတာလဲ?”WebSocket ရဲ့ အိုင်ဒီယာကို ၂၀၀၈ ခုနှစ်လောက်မှာ စတင် ဆွေးနွေးခဲ့ကြပြီး ၂၀၁၁ ခုနှစ်မှာ အင်တာနက် နည်းပညာ စံနှုန်းသတ်မှတ်ရေးအဖွဲ့ (IETF) ကနေ တရားဝင် စံအဖြစ် သတ်မှတ်ထုတ်ပြန်ခဲ့ပါတယ်။
ဘာကြောင့်/ဘယ်သူတွေ ဖန်တီးခဲ့လဲ
Section titled “ဘာကြောင့်/ဘယ်သူတွေ ဖန်တီးခဲ့လဲ”Michael Carter နဲ့ Ian Hickson လို ပညာရှင်တွေက Website တွေမှာ ချက်ချင်းအပြောင်းအလဲရှိတဲ့ ဆက်သွယ်မှု (Real-time Communication) အတွက် ပိုပြီး ထိရောက်တဲ့ နည်းလမ်းတစ်ခု၊ လူတိုင်း သုံးလို့ရတဲ့ စံတစ်ခု လိုအပ်နေပြီဆိုတာ သိမြင်ပြီး ဒီ WebSocket Protocol ကို စတင် အကောင်အထည်ဖော်ဖို့ ဦးဆောင်ခဲ့ကြတာပါ။
အဓိက ရည်ရွယ်ချက်
Section titled “အဓိက ရည်ရွယ်ချက်”သူ့ရဲ့ အဓိက ရည်ရွယ်ချက်ကတော့ HTTP ရဲ့ ကိုယ်က တောင်းဆိုမှ Server က ပြန်ပို့ပေးတဲ့ ကန့်သတ်ချက်တွေကို ကျော်လွှားပြီး Client (Browser) နဲ့ Server ကြားမှာ အချက်အလက်တွေ ချက်ချင်း၊ နှစ်ဖက်စလုံး စိတ်ကြိုက် အပြန်အလှန်ပို့နိုင်တဲ့ အမြဲတမ်း ဖွင့်ထားတဲ့ လမ်းကြောင်းတစ်ခုကို ဖန်တီးပေးဖို့ပါ။ (ဒါကို နည်းပညာအခေါ်အဝေါ်အရ Low-latency, Full-duplex, Persistent Communication Channel လို့ ခေါ်ပါတယ်) ဒါမှ Website Application တွေက Chat ခန်းတွေလို၊ Online Game တွေလို ပိုပြီး အသက်ဝင်လာပြီး ကိုယ်လုပ်တာကို ချက်ချင်း တုံ့ပြန်လာနိုင်မှာပါ။
WebSocket ၏ အဓိက ကောင်းကွက်များ
Section titled “WebSocket ၏ အဓိက ကောင်းကွက်များ”WebSocket ကို အသုံးပြုခြင်းအားဖြင့် Real-time Web Application တွေအတွက် အောက်ပါ ကောင်းကျိုးတွေကို ရရှိစေပါတယ်။
အမြဲတမ်း ဖွင့်ထားတဲ့ ချိတ်ဆက်မှု (Persistent Connection): အစပိုင်း Handshake (စတင်ချိတ်ဆက်ဖို့ အသိအမှတ်ပြုတဲ့ လုပ်ငန်းစဉ်) တစ်ကြိမ်လုပ်ပြီး Connection ဖွင့်လိုက်တာနဲ့ အဲဒီလမ်းကြောင်းက အမြဲတမ်း ဆက်လက် ဖွင့်ထားပြီးသား ဖြစ်နေပါတယ်။ အချက်အလက်အသစ် ပို့ချင်ယူချင်တိုင်း Connection ကို အသစ်ထပ်ထပ် ဖွင့်နေစရာ မလိုတော့ပါဘူး။ (ဖုန်းကြိုးကို စကားပြောနေသရွေ့ အမြဲတမ်း ဖွင့်ထားသလိုမျိုး)
-
နှစ်ဖက်စလုံး အချိန်မရွေး ပြောဆိုနိုင်ခြင်း (Full-Duplex Communication)
Section titled “နှစ်ဖက်စလုံး အချိန်မရွေး ပြောဆိုနိုင်ခြင်း (Full-Duplex Communication)”HTTP လိုမျိုး ကိုယ်က တောင်းဆိုမှ ပြန်ဖြေတာမျိုး မဟုတ်တော့ဘဲ Client နဲ့ Server နှစ်ခုလုံးဟာ Data ကို တစ်ပြိုင်နက်၊ ကိုယ်ပို့ချင်တဲ့အချိန် ကိုယ် အချက်အလက် ပို့လို့ရပါတယ်။ (ဖုန်းပြောတဲ့အခါ နှစ်ဘက်စလုံး တစ်ပြိုင်တည်း ပြောလို့ရသလိုမျိုး)
-
ချက်ချင်း Update များ ရရှိခြင်း (Low Latency)
Section titled “ချက်ချင်း Update များ ရရှိခြင်း (Low Latency)”Server မှာ အချက်အလက်အသစ် (ဥပမာ - Chat Message အသစ်ဝင်လာတာ) ရတာနဲ့ ဖွင့်ထားတဲ့ Connection ကနေ Client ဆီကို ချက်ချင်း၊ ချက်ချင်း ပို့ပေးနိုင်ပါတယ်။ ဒါ့ကြောင့် အချက်အလက်တွေ ရောက်ရှိတာ အရမ်းမြန်ဆန်ပြီး နှောင့်နှေးမှု (Delay) လုံးဝ နည်းပါတယ်။
-
မလိုအပ်တဲ့ အပိုအလုပ် နည်းခြင်း (Reduced Overhead)
Section titled “မလိုအပ်တဲ့ အပိုအလုပ် နည်းခြင်း (Reduced Overhead)”HTTP Request/Response တွေလို ခဏခဏ Connection ဖွင့်/ပိတ် လုပ်နေရတာနဲ့စာရင်၊ WebSocket Connection တစ်ခု ဖွင့်ထားပြီးတာနဲ့ အချက်အလက် တစ်ခုချင်းစီ ပို့တဲ့အခါ ပါသွားတဲ့ ထပ်ဆောင်းအချက်အလက် (Header) တွေက နည်းပါးပါတယ်။ ဒါ့ကြောင့် Network ပေါ်မှာ ပို့ရတဲ့ အချက်အလက် ပမာဏ သက်သာပြီး ပိုပြီး ထိရောက် မြန်ဆန်ပါတယ်။