Dalam dunia digital yang serba cepat, kebutuhan akan komunikasi data secara real-time semakin meningkat. Aplikasi seperti layanan chat, game online, hingga sistem notifikasi membutuhkan mekanisme pertukaran data yang cepat dan efisien. WebSocket hadir sebagai solusi untuk memenuhi kebutuhan tersebut. Artikel ini akan membahas apa itu WebSocket, perbedaannya dengan HTTP tradisional, beberapa kasus penggunaan relevan, serta eksperimen sederhana implementasi WebSocket untuk aplikasi chat.
Apa Itu WebSocket?
WebSocket adalah protokol komunikasi berbasis jaringan yang menyediakan saluran komunikasi dua arah (full-duplex) antara klien dan server melalui satu koneksi TCP yang tetap. Setelah koneksi WebSocket dibentuk, baik klien maupun server dapat saling mengirim pesan kapan saja tanpa perlu terus-menerus membuat permintaan baru seperti pada HTTP tradisional.
Perbedaan WebSocket dan HTTP Tradisional
HTTP Tradisional
- Request-Response model
- Membuka koneksi baru untuk setiap permintaan
- Overhead besar di setiap permintaan
- Kurang optimal untuk real-time
WebSocket
- Full-duplex communication
- Menggunakan satu koneksi tetap
- Overhead minimal setelah handshake
- Sangat mendukung real-time communication
Penggunaan WebSocket yang Relevan
WebSocket sangat cocok digunakan pada aplikasi yang membutuhkan komunikasi data real-time, seperti:
- Aplikasi Chat
- Game Online
- Sistem Notifikasi
- Dashboard Monitoring
- Kolaborasi Dokumen Online
Eksperimen Implementasi Sederhana WebSocket
Untuk memahami lebih dalam, saya melakukan eksperimen membangun aplikasi chat sederhana menggunakan WebSocket.
a. Server WebSocket (Node.js)
Server dibuat menggunakan library 'ws' di Node.js:
const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
const clients = new Set();
server.on('connection', socket => {
clients.add(socket);
socket.on('message', message => {
for (let client of clients) {
if (client.readyState === WebSocket.OPEN) {
client.send(message);
}
}
});
socket.on('close', () => {
clients.delete(socket);
});
});
b. Client WebSocket (HTML + JavaScript)
Client menggunakan HTML sederhana untuk menghubungkan ke server dan mengirimkan pesan:
<script>
let socket = new WebSocket('ws://localhost:8080');
socket.onmessage = (event) => console.log(event.data);
function sendMessage(msg) {
socket.send(msg);
}
</script>