Apa itu WebSocket, dan Cara Implementasi WebSocket pada NodeJS (Part 2 dari 3)

Free website hits

Apa itu WebSocket, dan Cara Implementasi WebSocket pada NodeJS (Part 2 dari 3)

Apa itu WebSocket, dan Cara Implementasi WebSocket pada NodeJS (Part 2 dari 3)
7 min read

Di artikel sebelumnya (Part 1), kita telah membahas apa itu WebSocket, bagaimana cara kerjanya, dan bagaimana membangun server dasar menggunakan NodeJS. Sekarang, kita akan melangkah lebih jauh dengan membahas cara membuat komunikasi dua arah antara client dan server, serta bagaimana menangani pesan dan event menggunakan WebSocket.


Membuat Komunikasi Dua Arah (Client-Server)

Salah satu keunggulan WebSocket adalah kemampuan untuk mengirim dan menerima data tanpa perlu melakukan permintaan (request) berulang seperti pada HTTP tradisional. Setelah koneksi WebSocket terbentuk, baik server maupun client dapat saling bertukar data kapan saja.

Contoh Client-side (JavaScript di Browser)

// Membuat koneksi WebSocket ke server
const socket = new WebSocket("ws://localhost:8080");

// Event ketika koneksi terbuka
socket.addEventListener("open", () => {
  console.log("Terhubung ke server WebSocket");
  socket.send("Halo dari client!");
});

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

Contoh Server-side (NodeJS)

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

server.on("connection", (socket) => {
  console.log("Client terhubung");

  socket.on("message", (message) => {
    console.log("Pesan dari client:", message);
    socket.send("Pesan diterima oleh server");
  });

  socket.on("close", () => {
    console.log("Koneksi client terputus");
  });
});

Dengan kode di atas, Anda sudah memiliki sistem sederhana yang memungkinkan client mengirim pesan ke server, dan server mengirim balasan kembali.


Menangani Banyak Client Sekaligus

Dalam aplikasi nyata seperti chat room, dashboard real-time, atau notifikasi sistem, Anda akan memiliki lebih dari satu client yang terhubung. Untuk itu, kita perlu mengatur cara mengirim pesan ke semua client yang aktif.

server.on("connection", (socket) => {
  console.log("Client baru terhubung");

  socket.on("message", (message) => {
    // Kirim pesan ke semua client
    server.clients.forEach((client) => {
      if (client.readyState === WebSocket.OPEN) {
        client.send(message);
      }
    });
  });
});

Kode di atas memungkinkan setiap pesan dari satu client dikirim ke semua client lain — seperti sistem broadcast.


Menangani Error dan Validasi Pesan

Dalam implementasi yang lebih kompleks, Anda perlu menangani berbagai jenis kesalahan dan memastikan format pesan yang diterima benar.

socket.on("message", (message) => {
  try {
    const data = JSON.parse(message);
    console.log("Data:", data);
  } catch (error) {
    socket.send("Format pesan tidak valid. Gunakan JSON.");
  }
});

Kesimpulan Sementara

Pada bagian kedua ini, kita telah mempelajari:

  1. Cara menghubungkan client ke server WebSocket.

  2. Cara membuat komunikasi dua arah.

  3. Cara menangani banyak client sekaligus.

  4. Validasi dan penanganan error sederhana.

Di Part 3, kita akan masuk ke implementasi lanjutan seperti autentikasi pengguna, penggunaan WebSocket dengan framework seperti Express, dan optimisasi performa untuk aplikasi skala besar.

Recommended for you