Skip to content
GitHub

WebSocket Messaging - Data ပို့ခြင်းနှင့် လက်ခံခြင်း

WebSocket Handshake လုပ်ငန်းစဉ် အောင်မြင်ပြီး Client နဲ့ Server ကြား နှစ်ဖက်သွား ဆက်သွယ်နိုင်တဲ့ လမ်းကြောင်း (Connection) ရရှိသွားပြီဆိုတာနဲ့ အဲဒီနောက်ပိုင်း အချက်အလက်တွေကို ပို့တဲ့အခါ “Message” အဖြစ် ပို့/ယူ လုပ်ပါတယ်။ Data Message တစ်ခုလုံးက ကြီးနေရင် သူ့ကို သေးငယ်တဲ့ အပိုင်းလေးတွေဖြစ်တဲ့ “Frame” တွေအဖြစ် ခွဲပြီး ပို့ပါတယ်။ Frame တစ်ခုစီက ပို့လိုက်တဲ့ Data အပိုင်းလေးတွေ ထည့်ထားတဲ့ အိတ်လေးတွေနဲ့ တူပါတယ်။

Network frame

Frames တွေ၊ Opcode တွေ နဲ့ Mask လုပ်ခြင်း

Section titled “Frames တွေ၊ Opcode တွေ နဲ့ Mask လုပ်ခြင်း”

Data တွေကို Network ပေါ် ပို့တဲ့အခါ Frame တွေအဖြစ် ထုပ်ပိုးပြီး ပို့ပါတယ်။ Frame တစ်ခုမှာ ထိပ်ပိုင်းအချက်အလက် (Header) နဲ့ တကယ့် ပို့လိုက်တဲ့ အချက်အလက်ကိုယ်ထည် (Payload Data) ဆိုပြီး အဓိက ပါဝင်ပါတယ်။

Opcode (အမျိုးအစား ခွဲခြားကုဒ်)

Section titled “Opcode (အမျိုးအစား ခွဲခြားကုဒ်)”

Frame ရဲ့ Header မှာ Opcode ဆိုတဲ့ သီးခြား ကုဒ်တစ်ခု ပါပါတယ်။ ဒီ Opcode က Payload Data (အချက်အလက်ကိုယ်ထည်) ဟာ ဘယ်လို အမျိုးအစားလဲဆိုတာကို ဖော်ပြပေးပါတယ်။ ဥပမာ -

  • Text: ပုံမှန် စာသား Message တွေ (Chat စာသားလိုမျိုး)
  • Binary: ပုံ၊ အသံ၊ ဗီဒီယို ဖိုင်တွေလိုမျိုး ဒါမှမဟုတ် စာမဟုတ်တဲ့ Data တွေ
  • Connection Close: ချိတ်ဆက်မှုကို ဖြတ်တောက်ချင်ကြောင်း အချက်ပြခြင်း
  • Ping: အခြားတစ်ဖက်က ဆက်သွယ်မှု ရှိ/မရှိ စစ်ဆေးခြင်း (ဥပမာ - လိုင်းကျနေလား စစ်တာ)
  • Pong: Ping ကို ပြန်ဖြေကြားခြင်း (ဥပမာ - ဟုတ်ကဲ့၊ ချိတ်ဆက်မှု ရှိပါတယ်လို့ ပြန်ပြောတာ) (Frame က စာထည့်ထားတဲ့ စာအိတ်ဆိုရင် Opcode က စာအိတ်ပေါ်မှာ ‘စာသားပါ’, ‘ပုံပါ’, ‘လိုင်းစစ်ခြင်း’ စသဖြင့် တံဆိပ်ကပ်ထားတာနဲ့ တူပါတယ်) Mask လုပ်ခြင်း (လုံခြုံရေးအတွက်): Client (Browser) ကနေ Server ဆီကို ပို့တဲ့ Message (Frame) တွေကို လုံခြုံရေးအတွက် Mask လုပ်ရပါမယ်။ ဒါဟာ ပို့လိုက်တဲ့ Data ကို Network လမ်းကြောင်းမှာ ဖြတ်သန်းနေစဉ်အတွင်း တခြားသူတွေ အလွယ်တကူ ကြည့်လို့မရအောင် ဒါမှမဟုတ် မတော်တဆ ပြောင်းလဲသွားတာမျိုး မဖြစ်အောင် ကာကွယ်တဲ့ ရိုးရှင်းတဲ့ လုံခြုံရေး နည်းလမ်းလေးပါ။ Server က ဒီ Mask လုပ်ထားတာကို ဘယ်လို ပြန်ဖြည်ရမလဲဆိုတာ သိပါတယ်။

ဆက်လက် လေ့လာမည့် Code Examples

Section titled “ဆက်လက် လေ့လာမည့် Code Examples”

ဒီ အချက်အလက် ပို့/ယူ လုပ်တာတွေ ဘယ်လို လုပ်လဲဆိုတာ ပိုပြီး လက်တွေ့ကျကျ နားလည်ဖို့အတွက် Code Examples တွေနဲ့ ဆက်ပြီး လေ့လာပါမယ်။