Skip to content
GitHub

ရိုးရှင်းသော Chat Application - Server

အခု Server ဘက်အတွက် လူကြိုက်များတဲ့ Node.js မှာ Socket.IO Library ကို သုံးပြီး Chat App လေးတစ်ခု ဘယ်လို တည်ဆောက်မလဲ ကြည့်ရအောင် ခင်ဗျာ။

Socket.IO ဟာ WebSocket တစ်ခုတည်းကိုပဲ သုံးတာ မဟုတ်ဘဲ၊ WebSocket မရတဲ့ အခြေအနေမျိုးမှာ Long Polling စတဲ့ တခြား နည်းလမ်း (Transports) တွေနဲ့ အလိုအလျောက် ပြောင်းလဲ ချိတ်ဆက်ပေးတဲ့ (Fallback) စနစ်ပါဝင်ပါတယ်။ Client နဲ့ Server ကြားမှာ Data တွေ ပို့/ယူ လုပ်ဖို့ တူညီပြီး ရိုးရှင်းတဲ့ API တစ်ခုကို ထောက်ပံ့ပေးထားပါတယ်။

Node.js Project စတင်ခြင်းနှင့် Socket.IO ထည့်သွင်းခြင်း

Section titled “Node.js Project စတင်ခြင်းနှင့် Socket.IO ထည့်သွင်းခြင်း”

Socket.IO Server တည်ဆောက်ဖို့အတွက် သင့်ကွန်ပျူတာမှာ Node.js ကို အရင် Install လုပ်ထားဖို့ လိုအပ်ပါတယ်။

၁။ သင့် Project အတွက် Folder အသစ်တစ်ခု ဖန်တီးပါ။ (ဥပမာ - node_chat_app) ၂။ Terminal သို့မဟုတ် Command Prompt ကို ဖွင့်ပြီး အဲ့ဒီ Folder ထဲကို ဝင်ပါ။ ၃။ အောက်ပါ Command ကို ရိုက်ပြီး Node.js Project ကို စတင်ပါ။ (Default Setting တွေအတိုင်း Enter နှိပ်သွားလို့ ရပါတယ်)

Terminal window
npm init -y

၄။ Socket.IO Library ကို Install လုပ်ပါမယ်။

Terminal window
npm install socket.io

သင့် Project Folder ထဲမှာ index.js ဆိုတဲ့ ဖိုင်တစ်ခု ဖန်တီးပြီး အောက်ပါ Code များကို ထည့်သွင်းပါ။

// လိုအပ်သော Module များ ထည့်သွင်းခြင်း
const http = require("http");
const socketIo = require("socket.io");
// HTTP Server ကို ဖန်တီးခြင်း
const server = http.createServer();
// Socket.IO ကို HTTP Server နှင့် ချိတ်ဆက်ခြင်း
const io = socketIo(server, {
// CORS သတ်မှတ်ချက် (Client နဲ့ Server Domain မတူတဲ့အခါ ချိတ်ဆက်ခွင့်ပြုရန်)
cors: {
origin: "*", // Development အတွက် အားလုံးကို ခွင့်ပြုထားသည်
methods: ["GET", "POST"],
},
});
// Client အသစ် ချိတ်ဆက်လာသောအခါ အလုပ်လုပ်မည့် အပိုင်း
io.on("connection", (socket) => {
console.log("အသုံးပြုသူ အသစ် ချိတ်ဆက်လာပါပြီ! ID:", socket.id);
// Client မှ 'chat message' အမည်ဖြင့် Data ပို့လာသောအခါ
socket.on("chat message", (msg) => {
console.log("Message လက်ခံရရှိ:", msg);
// ရရှိသော Message ကို ချိတ်ဆက်ထားသမျှ Client အားလုံးထံသို့ ပြန်လည် ဖြန့်ဝေ (Broadcast) ပေးခြင်း
io.emit("chat message", msg);
});
// Client ချိတ်ဆက်မှု ပြတ်တောက်သွားသောအခါ
socket.on("disconnect", () => {
console.log("အသုံးပြုသူ ချိတ်ဆက်မှု ပြတ်တောက်သွားပါပြီ။ ID:", socket.id);
});
});
// Server ကို Port 3000 တွင် စတင် Run ခြင်း
const PORT = 3000;
server.listen(PORT, () => {
console.log(`Socket.IO Chat Server ကို http://localhost:${PORT} တွင် Run နေပါပြီ။`);
});

Code ရှင်းလင်းချက် (Server)

Section titled “Code ရှင်းလင်းချက် (Server)”
  • const server = http.createServer();: ရိုးရှင်းတဲ့ Node.js HTTP Server တစ်ခုကို အရင်ဆုံး တည်ဆောက်ပါတယ်။ ဘာလို့လဲဆိုတော့ Socket.IO က ဒီ HTTP Server အပေါ်မှာ အခြေခံပြီးမှ အလုပ်လုပ်ရလို့ပါ။
  • cors: { origin: "*" }: Client ဖိုင်ကို (Browser မှာ) Server Run နေတဲ့ Domain/Port နဲ့ မတူတဲ့ နေရာကနေ ဖွင့်တဲ့အခါ CORS ပြဿနာ မဖြစ်အောင် ဖြေရှင်းပေးတာပါ။ တကယ့် အပြင် (Production) မှာတော့ * အစား ကိုယ့် Client ရှိမယ့် Domain အတိအကျကိုပဲ ခွင့်ပြုပေးသင့်ပါတယ်။
  • io.emit(): Server ဆီကို ရောက်လာတဲ့ Message ကို ချိတ်ဆက်ထားသမျှ Client အားလုံးဆီကို ပြန်လည် ဖြန့်ဝေ (Broadcast) ပေးလိုက်တာ ဖြစ်ပါတယ်။

ဒီ Setup ကို ဘယ်လို Run မလဲ?

Section titled “ဒီ Setup ကို ဘယ်လို Run မလဲ?”

၁။ Terminal (Command Prompt) ကနေ node index.js လို့ ရိုက်ထည့်ပြီး Server ကို စတင် Run လိုက်ပါ။ ၂။ ပြီးရင် နောက်သင်ခန်းစာမှာ ဆက်လက် ရေးသားမယ့် Client ဘက်ခြမ်း (HTML ဖိုင်) ကို Browser ကနေ ဖွင့်ပြီး စမ်းသပ်နိုင်ပါပြီ။