
Sang Pelopor WebSockets yang Ramah
Jika kamu pernah mencari tutorial "How to build a Chat App with Node.js", 99% dari tutorial tersebut akan menggunakan *library* bernama Socket.io. Kenapa tidak menggunakan fungsi WebSockets (ws) murni bawaan *Node.js* saja?
WebSockets murni itu bagaikan mesin mobil tanpa setir; sangat cepat tapi sangat kasar. Jika koneksi WiFi *user* putus, WebSockets murni tidak akan otomatis menyambung ulang. Jika *browser* pengguna itu *Internet Explorer* jadul yang belum paham apa itu WebSockets, aplikasinya akan rusak. Socket.io lahir untuk membungkus semua masalah itu.
Kekuatan Utama Socket.io (Fitur Fallback)
Kelebihan utama Socket.io bukanlah pada kecepatan WebSockets-nya, melainkan pada kehebatannya mengakali jaringan jelek. Ia memiliki fitur Auto-Fallback.
Saat *Frontend* (Client) mencoba terhubung, Socket.io akan mengecek: "Apakah browser dan jaringan ini mendukung WebSockets?". Jika ternyata jaringan kantor *user* tersebut memblokir *Port WebSockets*, Socket.io tidak akan menyerah. Ia akan otomatis (tanpa kamu sadari) mengubah taktiknya menjadi HTTP Long Polling (seperti yang dibahas di artikel sebelumnya). Fitur jaminan koneksi ini sangat disukai *Developer*!
Fitur Dewa: Rooms dan Namespaces
Membangun fitur Chat Pribadi (1 lawan 1) atau Grup Chat sangat menyiksa jika dilakukan manual. Di Socket.io, ada konsep sakti bernama Rooms.
- Join Room:
socket.join('room-rahasia-123') - Kirim Pesan ke Ruangan:
io.to('room-rahasia-123').emit('pesan-baru', 'Halo semuanya!')
Hanya dengan dua baris kode di atas, Server Node.js-mu akan menyortir dan memastikan pesan itu Hanya terkirim ke pengguna yang berada di dalam ruangan tersebut, tanpa mengganggu ratusan pengguna di ruangan grup lainnya!
Kelemahan Socket.io (Scaling)
Socket.io menyimpan data ingatan (Siapa ada di Ruangan mana) Di Dalam Memori RAM Server Node.js Itu Sendiri.
Selama kamu hanya pakai 1 Server (VPS kecil), ini sangat lancar. TAPI, saat bisnismu viral dan kamu mengkloning Node.js-mu menjadi 5 Server (pakai Load Balancer), sistem Room milik Socket.io akan hancur lebur berantakan! Pesan dari Budi (di Server 1) tidak akan sampai ke Joko (yang masuk lewat Server 2). Untuk masalah ini, *Developer* harus menambahkan alat pihak ketiga lagi (seperti Redis Adapter) yang akan kita bahas di artikel berikutnya.
Mau langsung pakai template?
Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.
Browse Templates