Cara Membangun Aplikasi Chat Real-Time dengan WebSocket di Node.js

Cara Membangun Aplikasi Chat Real-Time dengan WebSocket di Node.js
Views: 15

Cara Membangun Aplikasi Chat Real-Time dengan WebSocket di Node.js

Aplikasi chat real-time menjadi bagian penting dalam banyak aplikasi web modern, dari platform komunikasi pribadi hingga layanan dukungan pelanggan. Salah satu teknologi yang memungkinkan komunikasi instan antar pengguna adalah WebSocket. WebSocket memungkinkan komunikasi dua arah secara langsung antara klien dan server, yang sangat ideal untuk aplikasi chat real-time.

baca juga : Panduan Instalasi Internet Cepat untuk Koneksi Stabil

Pada artikel ini, kita akan membahas bagaimana membangun aplikasi chat real-time menggunakan WebSocket dengan Node.js sebagai servernya. WebSocket akan memungkinkan aplikasi untuk mengirim dan menerima pesan secara instan tanpa harus membuat permintaan HTTP berulang kali.

Apa Itu WebSocket?

WebSocket adalah protokol komunikasi yang memungkinkan saluran komunikasi dua arah yang tetap terbuka antara klien dan server. Ini memungkinkan data dapat dikirim kapan saja tanpa perlu menunggu permintaan dari klien. Hal ini sangat berguna untuk aplikasi yang membutuhkan pembaruan data secara instan, seperti aplikasi chat, aplikasi game multiplayer, atau sistem notifikasi.

Dengan WebSocket, server dan klien dapat berkomunikasi secara langsung tanpa harus membuat permintaan HTTP setiap kali ingin bertukar data.

Langkah 1: Mempersiapkan Server dengan Node.js dan WebSocket

Untuk membangun aplikasi chat real-time ini, kita akan menggunakan Node.js dan pustaka ws untuk membuat server WebSocket. Berikut adalah langkah-langkah untuk mempersiapkan server.

1.1. Membuat Proyek Node.js

Buka terminal dan buat direktori untuk proyek baru, lalu inisialisasi proyek Node.js dengan perintah berikut:

mkdir chat-app
cd chat-app
npm init -y

1.2. Instalasi WebSocket

Instal pustaka ws untuk menangani koneksi WebSocket di server Node.js:

npm install ws

1.3. Membuat Server WebSocket

Sekarang, buat file server.js dan tambahkan kode berikut untuk membuat server WebSocket:

// server.js
const WebSocket = require('ws');

// Membuat server WebSocket pada port 8080
const wss = new WebSocket.Server({ port: 8080 });

// Menangani koneksi klien
wss.on('connection', (ws) => {
  console.log('Client connected');
  
  // Mengirim pesan sambutan ke klien
  ws.send('Selamat datang di aplikasi chat real-time!');

  // Mendengarkan pesan dari klien
  ws.on('message', (message) => {
    console.log('Pesan diterima: %s', message);
    // Mengirimkan pesan ke semua klien yang terhubung
    wss.clients.forEach(client => {
      if (client !== ws && client.readyState === WebSocket.OPEN) {
        client.send(message);
      }
    });
  });

  // Menangani saat koneksi ditutup
  ws.on('close', () => {
    console.log('Client disconnected');
  });
});

console.log('Server WebSocket berjalan di ws://localhost:8080');

Penjelasan Kode:

  • WebSocket.Server: Membuat server WebSocket yang mendengarkan permintaan pada port 8080.
  • wss.on(‘connection’): Ketika klien terhubung, server mengirim pesan sambutan dan mulai mendengarkan pesan yang dikirim klien.
  • wss.clients.forEach: Server mengirimkan pesan ke semua klien yang terhubung, kecuali pengirim pesan.
  • ws.on(‘close’): Menangani saat koneksi klien ditutup.

1.4. Menjalankan Server

Setelah menambahkan kode, jalankan server menggunakan perintah berikut:

node server.js

Server WebSocket Anda sekarang berjalan di ws://localhost:8080.

Langkah 2: Membuat Klien dengan HTML dan JavaScript

Sekarang, mari kita buat sisi klien untuk aplikasi chat real-time. Klien ini akan bertanggung jawab untuk mengirimkan dan menerima pesan melalui WebSocket.

2.1. Membuat File HTML

Buat file index.html dan tambahkan kode berikut:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Aplikasi Chat Real-Time dengan WebSocket</title>
</head>
<body>
    <h1>Chat Real-Time dengan WebSocket</h1>
    <div>
        <input type="text" id="message" placeholder="Ketik pesan..." />
        <button onclick="sendMessage()">Kirim Pesan</button>
    </div>
    <div id="chat-box" style="margin-top: 20px; border: 1px solid #ccc; padding: 10px; max-height: 300px; overflow-y: auto;"></div>

    <script>
        // Membuka koneksi WebSocket ke server
        const socket = new WebSocket('ws://localhost:8080');

        // Menangani pesan yang diterima dari server
        socket.onmessage = function(event) {
            const chatBox = document.getElementById('chat-box');
            chatBox.innerHTML += `<p><strong>Server:</strong> ${event.data}</p>`;
            chatBox.scrollTop = chatBox.scrollHeight;  // Scroll ke bawah saat pesan baru diterima
        };

        // Menangani kesalahan koneksi WebSocket
        socket.onerror = function(error) {
            console.error('WebSocket Error:', error);
        };

        // Fungsi untuk mengirim pesan ke server
        function sendMessage() {
            const message = document.getElementById('message').value;
            socket.send(message);  // Mengirim pesan ke server
            const chatBox = document.getElementById('chat-box');
            chatBox.innerHTML += `<p><strong>Anda:</strong> ${message}</p>`;
            document.getElementById('message').value = '';  // Bersihkan input
            chatBox.scrollTop = chatBox.scrollHeight;  // Scroll ke bawah
        }
    </script>
</body>
</html>

Penjelasan Kode:

  • WebSocket(‘ws://localhost:8080’): Membuka koneksi WebSocket ke server yang berjalan di localhost:8080.
  • socket.onmessage: Mendengarkan pesan yang diterima dari server dan menampilkannya di layar.
  • socket.send(): Mengirimkan pesan ke server saat tombol “Kirim Pesan” diklik.
  • chatBox.scrollTop = chatBox.scrollHeight: Memastikan bahwa kotak chat selalu scroll ke bawah untuk menampilkan pesan terbaru.

2.2. Menjalankan Klien

  1. Pastikan server WebSocket Anda sedang berjalan di terminal dengan perintah node server.js.
  2. Buka file index.html di browser.
  3. Ketik pesan di input box dan klik tombol “Kirim Pesan”. Pesan Anda akan muncul di kotak chat, dan server akan mengirimkan pesan tersebut ke semua klien yang terhubung.

Langkah 3: Menambahkan Fitur Lanjutan

Setelah berhasil membuat aplikasi chat real-time dasar ini, Anda bisa mengembangkan aplikasi dengan menambahkan fitur-fitur berikut:

  • Grup Chat: Menambahkan kemampuan untuk membuat dan bergabung dengan grup chat.
  • Autentikasi Pengguna: Implementasikan sistem login untuk membatasi siapa yang dapat mengirimkan pesan.
  • Notifikasi Push: Menambahkan notifikasi push untuk memberitahukan pengguna tentang pesan baru.
  • Pengaturan Tema: Membuat aplikasi yang lebih menarik dengan opsi tema gelap atau terang.

baca juga : Dosen Universitas Teknokrat Indonesia Yuseano Kardiansyah Terpilih Laboratorium Penerjemah Sastra Kementerian Kebudayaan

Kesimpulan

Dengan menggunakan WebSocket dan Node.js, Anda dapat membangun aplikasi chat real-time yang responsif dan efisien. WebSocket memungkinkan komunikasi dua arah yang terus menerus antara server dan klien tanpa harus membuat permintaan HTTP berulang, membuat aplikasi lebih cepat dan efisien.

Sekarang Anda sudah memiliki dasar untuk membuat aplikasi chat real-time dengan WebSocket, dan Anda bisa mengembangkannya lebih lanjut untuk kebutuhan aplikasi Anda!

penulis : bagus nayottama

Views: 15
Cara Membangun Aplikasi Chat Real-Time dengan WebSocket di Node.js

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top