Konsep WebSocket
Apa itu WebSocket?
WebSocket (WS) adalah sebuah protokol komunikasi komputer yang memungkinkan untuk berkomunikasi secara 2 arah diatas 1 koneksi TCP.
WebSocket mengizinkan interaksi antara client dengan server secara real-time
. Dengan protokol ini dapat mengirim request secara terus menerus tanpa harus membuka koneksi untuk 1 koneksi seperti protokol HTTP.
Berikut beberapa kelebihan WebSocket dibandingkan menggunakan HTTP
- Koneksi 2 arah secara asynchronous, baik client maupun server dapat mengirim pesan ke masing-masing tujuan secara langsung tanpa pihak yang menerima data harus request terlebih dahulu
Latency time
yang sangat rendahStream data
secarareal-time
Beberapa aplikasi yang lebih baik menggunakan websocket Realtime Notification Aplikasi chat Aplikasi yang memerlukan realtime perubahan data
Beberapa aplikasi yang lebih baik menggunakan websocket
- Realtime Notification
- Aplikasi chat
- Aplikasi yang memerlukan realtime perubahan data
Koneksi HTTP vs WebSocket
Sumber Gambar klik disini
Perbandingan dengan protokol HTTP dan WebSocket HTTP :
- HTTP : Client hanya bisa mengirim request, dan server mengirim balik response ke client.
- WebSocket : Ketika koneksi antara client dan server terhubung, maka kedua pihak dapat saling mengirim data tanpa membuka koneksi baru, sampai koneksi tersebut putus.
Apa itu Socket.io ?
Socket.io
adalah real-time engine opensource
yang dibangun di atas Node.js. Dengan Socket.io
kita dapat berkomunikasi secara real-time
, dua arah dan komunikasi berbasis event
. Dengan komunikasi berbasis event
, kita tidak perlu request
untuk mendapatkan data terbaru, yang perlu kita lakukan hanyalah listen
/ subcribe
ke suatu topik. Jadi selama WebSocket
tetap aktif dan listen ke suatu topik. Jika terdapat data baru di topic
tersebut, kita akan mendapatkan datanya secara otomatis.
Dokumentasi socket.io disini
Event Socket.io
emit
berfungsi untuk mengirimkan sebuah pesan dari server ke client atau sebaliknya.on
berfungsi untuk menerima data atau informasi yang dikirimkan dari emmit event yang akan segera di proses oleh method yang sudah dibuat.Broadcast
, merupakan fitur untuk mengirim data/pesan seperti event emitter, namun broadcast mengirim ke semua alamat socket yang aktif kecuali pengirimnya sendiri.join
berfungsi untuk memasukkan klien (socket) ke dalam sebuah "room" . Dengan konsep room, kita bisa mengelompokkan beberapa klien yang terhubung ke dalam grup tertentu, sehingga memungkinkan pengiriman pesan yang lebih terfokus hanya kepada klien di dalam room tersebut. Hal ini dapat kita gunakan misalnya dalam percakapan grup atau chat pribadi.
Keuntungan Socket.io
Komunikasi real-time
: Socket.IO memungkinkan pengiriman dan penerimaan data secara langsung antara klien dan server, sehingga aplikasi dapat merespons perubahan data secara instan.Kompabilitas
yang baik: Socket.IO bekerja di berbagai browser dan platform dengan dukungan fallback untuk teknik polling jika WebSocket tidak tersedia.Event-based communication
: Socket.IO menggunakan model komunikasi yang berbasis event, di mana klien dan server dapat saling mengirim dan menerima event.Skalabilitas
: Socket.IO dirancang untuk dapat digunakan dalam sistem yang dapat diskalakan, sehingga dapat menangani banyak koneksi secara bersamaan.