Lewati ke konten utama
menjadi.dev
Backend

WebSocket

Protokol komunikasi dua arah real-time antara client dan server.

WebSocket adalah protokol komunikasi yang menyediakan channel dua arah (full-duplex) antara client dan server melalui satu koneksi TCP yang persisten. Berbeda dengan HTTP yang request-response (client minta, server jawab, selesai), WebSocket memungkinkan server mengirim data ke client kapan saja (real-time). Use cases: chat application, live notifications, real-time collaboration (Google Docs), live score update, stock price ticker. Proses: client kirim HTTP request dengan header Upgrade: websocket → server terima dan meng-upgrade koneksi → channel terbuka untuk komunikasi dua arah. Library: Socket.IO (fallback ke polling kalau WebSocket tidak tersedia), ws (native WebSocket), dan PartyKit (cloud-based WebSocket).

Contoh Kode

// WebSocket server (ws library)
import { WebSocketServer } from 'ws';

const wss = new WebSocketServer({ port: 8080 });

wss.on('connection', (ws) => {
  ws.on('message', (data) => {
    // Broadcast ke semua client yang terhubung
    wss.clients.forEach(client => {
      if (client.readyState === 1) {
        client.send(JSON.stringify({ type: 'chat', message: data.toString() }));
      }
    });
  });
});