WebSocket: Rahasia Komunikasi Real-Time di Internet Modern

WebSocket: Rahasia Komunikasi Real-Time di Internet Modern

Update 19/10/25 · Read 3 minute

WebSocket adalah teknologi yang memungkinkan komunikasi real-time antara klien (browser atau aplikasi) dan server. Berbeda dengan HTTP, WebSocket menyediakan saluran komunikasi dua arah yang tetap terbuka selama koneksi aktif, sehingga server bisa mengirim data kapan saja tanpa menunggu permintaan dari klien.


Apa itu WebSocket?

WebSocket adalah protokol komunikasi jaringan yang bekerja di atas TCP. Protokol ini dirancang untuk aplikasi yang membutuhkan pertukaran data secara cepat dan berkelanjutan. WebSocket menggunakan skema:

  • ws:// → WebSocket biasa (tidak terenkripsi)

  • wss:// → WebSocket Secure (terenkripsi, mirip HTTPS)

Kelebihan WebSocket dibanding HTTP:

Fitur HTTP WebSocket
Komunikasi Request-response Full-duplex (dua arah)
Koneksi Setiap request baru Persistent (tetap terbuka)
Latensi Lebih tinggi Rendah
Overhead Header Besar Kecil

Cara Kerja WebSocket

  1. Handshake Awal:
    Klien mengirim HTTP request khusus ke server untuk meminta upgrade ke WebSocket.

  2. Koneksi Terbuka:
    Jika server menyetujui, koneksi TCP tetap terbuka dan bisa dipakai dua arah.

  3. Pertukaran Pesan:
    Klien dan server dapat mengirim pesan kapan saja, baik berupa teks maupun biner.

  4. Penutupan Koneksi:
    Koneksi dapat ditutup oleh salah satu pihak dengan perintah close.


Contoh Implementasi

1. Client Web (JavaScript)

// Membuat koneksi WebSocket
const socket = new WebSocket('ws://localhost:8080');

// Event ketika koneksi terbuka
socket.onopen = () => {
    console.log('Terhubung ke server');
    socket.send('Halo Server!');
};

// Event ketika menerima pesan
socket.onmessage = (event) => {
    console.log('Pesan dari server:', event.data);
};

// Event ketika koneksi ditutup
socket.onclose = () => {
    console.log('Koneksi ditutup');
};

// Event error
socket.onerror = (error) => {
    console.error('Error WebSocket:', error);
};

2. Server Node.js (Menggunakan ws Library)

const WebSocket = require('ws');

const server = new WebSocket.Server({ port: 8080 });

server.on('connection', (socket) => {
    console.log('Klien terhubung');

    socket.on('message', (message) => {
        console.log('Pesan diterima:', message);
        socket.send('Halo Klien!');
    });

    socket.on('close', () => {
        console.log('Klien terputus');
    });
});

Kegunaan WebSocket

WebSocket banyak digunakan pada aplikasi real-time, seperti:

  • Chat dan messaging apps

  • Game online

  • Monitoring data (misalnya harga saham atau sensor IoT)

  • Live streaming & notifikasi

  • Kolaborasi dokumen secara online

READ :  Kenapa Memilih Node.js untuk Pengembangan Aplikasi?

FAQs

1. Apa perbedaan WebSocket dan HTTP biasa?
HTTP bersifat request-response, artinya server hanya merespons ketika ada permintaan. WebSocket bersifat full-duplex, sehingga server bisa mengirim data kapan saja.

2. Apa itu wss://?
wss:// adalah WebSocket Secure, sama seperti HTTPS. Data yang dikirim terenkripsi sehingga lebih aman.

3. Bisakah WebSocket bekerja di browser lama?
Sebagian besar browser modern mendukung WebSocket, tetapi browser lama (seperti IE 9 ke bawah) mungkin tidak mendukung.

4. Apakah WebSocket menggantikan HTTP?
Tidak. WebSocket lebih cocok untuk aplikasi real-time. HTTP tetap digunakan untuk request biasa, seperti mengambil halaman web atau API sederhana.

5. Bagaimana menangani koneksi yang terputus?
Biasanya aplikasi menggunakan reconnect otomatis atau mekanisme heartbeat untuk memastikan koneksi tetap hidup.

6. Apakah WebSocket bisa digunakan untuk aplikasi mobile?
Ya, banyak SDK mobile (iOS, Android) mendukung WebSocket untuk komunikasi real-time.


Kesimpulan

WebSocket adalah teknologi penting untuk aplikasi modern yang membutuhkan komunikasi real-time. Dengan kemampuan full-duplex dan koneksi yang persisten, WebSocket memungkinkan pengalaman pengguna yang lebih cepat dan responsif dibanding HTTP biasa.