บทนำ
หากคุณเคยใช้งานระบบที่ต้องการอัปเดตข้อมูลแบบทันที เช่น ระบบแชท เกมออนไลน์ การแจ้งเตือนแบบ real-time คุณอาจสงสัยว่าทำอย่างไรให้เว็บสามารถสื่อสารสองทางแบบรวดเร็วได้ นี่คือสิ่งที่ WebSocket เข้ามาช่วยแก้ปัญหาให้ได้อย่างมีประสิทธิภาพ
WebSocket คืออะไร?
WebSocket เป็น protocol พิเศษที่ช่วยให้ client (เช่น browser) และ server สามารถเปิดการเชื่อมต่อแบบสองทาง (bi-directional) ได้อย่างต่อเนื่องโดยไม่ต้องร้องขอข้อมูลใหม่ซ้ำ ๆ เหมือน HTTP
เมื่อเชื่อมต่อแล้ว ทั้งสองฝ่ายสามารถส่งข้อมูลถึงกันได้ทันทีแบบ real-time โดยไม่ต้อง “request – response” ซ้ำ ๆ

เปรียบเทียบ: WebSocket vs HTTP
| คุณสมบัติ | HTTP | WebSocket |
|---|---|---|
| รูปแบบ | Request → Response | Connection ต่อเนื่อง |
| ความเร็ว | ช้า (รอ polling) | เร็ว (push ได้ทันที) |
| การใช้งาน | เว็บทั่วไป, API | Chat, Gaming, Stock Ticker |
การสร้าง Real-Time Chat ด้วย WebSocket
1. Backend (Node.js + ws)
npm install ws
// server.js
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', ws => {
ws.on('message', msg => {
wss.clients.forEach(client => {
if (client.readyState === WebSocket.OPEN) {
client.send(msg);
}
});
});
});
2. Frontend (HTML + JavaScript)
<script>
const socket = new WebSocket('ws://localhost:8080');
socket.onmessage = event => {
const message = document.createElement('div');
message.innerText = event.data;
document.body.appendChild(message);
};
function sendMessage(msg) {
socket.send(msg);
}
</script>
ข้อดีของ WebSocket
- ส่งข้อมูลได้เร็วมากแบบ real-time
- ลดการใช้ bandwidth เพราะไม่ต้อง request ซ้ำ
- เหมาะกับแอปพลิเคชันแบบ interactive เช่น multiplayer game
- เชื่อมต่อครั้งเดียว ส่งข้อมูลได้หลายรอบ
ข้อจำกัดของ WebSocket
- ต้องดูแลเรื่อง connection timeout
- ไม่เหมาะกับ API ที่ไม่มีความถี่ในการอัปเดต
- บาง firewall หรือ proxy อาจบล็อก WebSocket
เมื่อไหร่ควรใช้ WebSocket?
- ระบบแชท
- การแจ้งเตือนแบบทันที (real-time notification)
- เกมออนไลน์
- Live update เช่น dashboard หรือราคาหุ้น
สรุป
WebSocket เป็นเครื่องมือที่ทรงพลังสำหรับการสร้างแอปพลิเคชันแบบ real-time โดยเฉพาะการแชท และการสื่อสารสองทางระหว่าง client-server ในรูปแบบที่รวดเร็วและประหยัดทรัพยากร
บทความนี้ใช้เวลาอ่าน 10 – 15 นาที เขียนโดยทีมงาน poolsawat.com