Tutorial WebSocket dengan Node.js di cPanel

WebSocket adalah protokol komunikasi dua arah yang memungkinkan koneksi persistens antara server dan klien tanpa perlu melakukan polling berulang. Tutorial ini akan menunjukkan cara menjalankan WebSocket menggunakan Node.js di cPanel, cocok untuk aplikasi real-time seperti chat, notifikasi, dan dashboard monitoring.

Apa itu WebSocket?

WebSocket memungkinkan komunikasi interaktif antara browser dan server. Berbeda dengan HTTP, WebSocket membuka koneksi terus-menerus yang hemat bandwidth dan sangat cepat.

Syarat Sebelum Mulai

Sebelum mengikuti tutorial ini, diasumsikan Anda:

  • Sudah memiliki kode WebSocket berbasis Node.js (file seperti app.js atau server.js).
  • Memiliki akses ke cPanel yang mendukung Node.js.
  • Telah mengaktifkan versi Node.js melalui fitur Setup Node.js App di cPanel.
  • Sudah memiliki domain atau subdomain yang akan digunakan untuk menjalankan aplikasi.

Langkah-Langkah Menjalankan WebSocket dengan Node.js di cPanel

Buat Aplikasi Node.js di cPanel

  • Login ke cPanel
  • Cari dan klik Menu Setup Node.js App.
  • Pilih versi Node.js yang diinginkan.
  • Setel Application Root (misalnya: websocket-app) dan Application URL.
  • Setelah diisi semua seperti dibawah ini bisa langsung klik Create.

Ambil Sertifkat dan Private Key SSL

Agar websocket berjalan dengan aman, maka kita perlu menjalankannya melalui https atau yang biasa disebut dengan Websocket Secure (wss) . Jadi kita perlu mengambil sertifkat dan private key SSL Let’s Encrypt! dari cPanel. Untuk langkah-langkahnya seperti berikut.

  • Klik menu SSL/TLS
  • Selanjutnya bisa klik Manage SSL Sites pojok kanan bawah.
  • Scroll kebawah dan temukan section Install an SSL Website.
  • klik Select a Domain, dan pilih domain yang ingin Anda jadikan websocket, lalu klik Autofill by Domain, untuk menampilakan sertifkat (CRT) dan private key SSL.
  • Simpan Certificate (CRT) dan Private Key ke Notepad, untuk kita gunakan di websocket.

Request Open Port ke Technical Support

Untuk dapat menjalankan WebSocket, Anda wajib membuka port khusus di shared hosting yang Anda dapatkan. Di layanan shared hosting Natanetwork, port tidak dibuka sembarangan demi alasan keamanan.

Catatan penting:

✅ Anda hanya diperbolehkan membuka 2 port aktif di server hosting Anda.
✅ Silakan ajukan request open port melalui tiket ke bagian Technical Support.
✅ Anda akan diberikan rekomendasi port yang tersedia dan aman digunakan.

📨 Panduan lengkap membuat tiket bisa dibaca di sini:
👉 Cara open ticket pada web Natanetwork

Tambahkan File Aplikasi Websocket

  • Masuk ke file manager dan buka folder websocket-app. Buat file key.pem untuk menaruh private key SSL yang sudah kita ambil ke websocket.
  • Lakukan hal yang sama untuk cert.pem untuk menaruh certificate (crt) ke websocket.
  • Pada contoh dibawah ini merupakan websocket sederhana yang dijalankan di port 5331 dan telah import file sertfikat SSL dengan isi seperti berikut.
const fs = require('fs');
const https = require('https');
const WebSocket = require('ws');

// Tentukan port yang available di server hosting
const port = 5331;

// import file sertifikat SSL (sesuaikan path dengan lokasi sertifikat)
const serverOptions = {
    key: fs.readFileSync('./key.pem'),
    cert: fs.readFileSync('./cert.pem')
};

// Buat server HTTPS
const httpsServer = https.createServer(serverOptions, (req, res) => {
    res.writeHead(200);
    res.end('WebSocket Secure Server (WSS) is running');
});

const wss = new WebSocket.Server({ server: httpsServer });

let clientCounter = 0;

wss.on('connection', ws => {
    clientCounter++;
    ws.id = clientCounter;

    console.log(`Klien ${ws.id} terhubung.`);
    ws.send(`Selamat datang! Anda adalah Klien ${ws.id} (terhubung via WSS).`);

    ws.on('message', message => {
        console.log(`Pesan dari Klien ${ws.id}: ${message}`);
        const broadcastMessage = `Klien ${ws.id}: ${message}`;
        wss.clients.forEach(client => {
            if (client.readyState === WebSocket.OPEN) {
                client.send(broadcastMessage);
            }
        });
    });

    ws.on('close', () => {
        console.log(`Koneksi Klien ${ws.id} ditutup.`);
        const departureMessage = `Klien ${ws.id} telah keluar.`;
        wss.clients.forEach(client => {
            if (client.readyState === WebSocket.OPEN) {
                client.send(departureMessage);
            }
        });
    });

    ws.on('error', error => {
        console.error(`Terjadi error pada Klien ${ws.id}:`, error);
    });
});

httpsServer.listen(port, () => {
    console.log(`Server WebSocket Secure (WSS) berjalan di wss://websocket.natanet.my.id:${port}`);
});

Install Dependensi WebSocket

Kembali ke halaman Setup Node.js App → klik nama aplikasi → klik tombol Run NPM Install.

Atau akses terminal (SSH) ke aplikasi Anda dan jalankan:

npm install

Jalankan Websocket

Pastikan aplikasi berjalan dengan klik tombol Start App di halaman Setup Node.js App.

Tes Koneksi WebSocket

Anda bisa menguji koneksi dengan browser menggunakan websocketclient.com

Kesimpulan

Dengan mengikuti langkah-langkah pada artikel ini, Anda kini memahami cara menggunakan WebSocket di Node.js dengan cPanel dengan koneksi aman (wss://) menggunakan sertifikat SSL. Pastikan Anda sudah mengatur environment Node.js dengan benar, men-deploy aplikasi ke folder yang tepat, serta mengajukan permintaan port terbuka ke technical support. Dengan konfigurasi yang benar, Anda dapat menjalankan aplikasi real-time berbasis WebSocket secara lancar di cPanel hosting.

Leave a Reply

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