Episode ini membedah protokol WebSocket secara konseptual: standar RFC 6455, komunikasi full-duplex di atas satu koneksi TCP, skema ws dan wss, serta perbandingan dengan polling, SSE, dan HTTP/2 Server Push untuk memutuskan kapan memakai WebSocket.

Setelah melihat sejarah evolusi real-time web di episode 1, sekarang waktunya membedah protokol WebSocket itu sendiri. Di episode ini kalian akan memahami standar yang menjadi dasar segala implementasi: RFC 6455.
WebSocket adalah protokol komunikasi yang menyediakan full-duplex — kedua sisi bisa mengirim data secara bersamaan melalui satu koneksi TCP yang persisten. Tidak seperti HTTP yang tiap pesan membawa header lengkap, WebSocket setelah handshake mengirim data langsung dengan overhead yang sangat kecil.
RFC 6455 diratifikasi pada tahun 2011 dan mendefinisikan protokol WebSocket secara lengkap: handshake, framing, masking, control frame, dan prosedur penutupan. Karena standar, semua implementasi — ws di Node.js, gorilla/websocket di Go, websockets di Python — bisa saling berkomunikasi.
Ciri paling menonjol dari protokol ini:
npx wscat -c ws://echo.websocket.eventsPerintah npx wscat -c ws://echo.websocket.events menghubungkan kalian ke server echo publik. Ketik apa saja dan server akan memantulkan pesan yang sama — cara tercepat merasakan full-duplex tanpa menulis kode.
Sama seperti HTTP yang punya http:// dan https://, WebSocket punya dua skema:
ws://host:port/path
wss://host:port/pathFormat ws://host:port/path di atas menunjukkan bahwa port dan path bersifat opsional — mirip URL HTTP, termasuk query string untuk membawa parameter.
Polling (episode 1) tetap melakukan request-response berulang dengan header lengkap setiap kali. WebSocket mengirim sekali handshake lalu bercakap langsung dengan frame ringan. Untuk update yang sering, WebSocket menang telak; untuk request yang jarang dan sekali jalan, HTTP polling malah lebih simpel.
SSE adalah koneksi HTTP panjang satu arah dengan reconnection otomatis. WebSocket dua arah dan mendukung binary. Pilihannya sederhana:
HTTP/2 Server Push memungkinkan server mengirim resource sebelum diminta, tetapi dirancang untuk caching asset, bukan untuk komunikasi dua arah berkelanjutan. WebSocket tetap menjadi pilihan utama untuk pesan interaktif real-time.
HTTP/3 dibangun di atas QUIC yang lebih cepat dari TCP untuk multiplexing. Namun HTTP/3 tetap request-response; untuk stream bidirectional murni, teknologi masa depan bernama WebTransport lebih relevan — akan kita bahas di episode 32.
WebSocket unggul di skenario yang menuntut pertukaran data berkelanjutan:
WebSocket bukan jawaban untuk segalanya. Hindari ketika:
Warning
WebSocket tidak punya mekanisme caching, versioning, atau semantics seperti HTTP method. Jangan mencoba "meniru" REST di atas WebSocket tanpa alasan yang jelas — gunakan protokol yang tepat untuk job yang tepat.
Semua koneksi WebSocket melewati dua fase besar:
Fase handshake akan kita bedah detail di episode 3. Untuk sekarang, yang penting dipahami: fase ini hanya terjadi sekali, dan setelahnya koneksi "berubah" dari HTTP menjadi WebSocket.
Koneksi yang sudah terbentuk bisa dipakai dalam beberapa pola:
Pola-pola ini adalah fondasi aplikasi seperti chat. Implementasinya akan kita praktikkan mulai episode 5 dan mendalam di episode 9.
Episode 2 memberi kalian peta konseptual protokol WebSocket: standar RFC 6455, skema ws dan wss, serta perbandingan dengan polling, SSE, dan HTTP/2 Server Push. Kalian juga sudah tahu kapan memakai WebSocket dan kapan tidak.
Inti yang harus dibawa pulang:
wss:// adalah wajib untuk production karena memakai TLS.Di episode 3 selanjutnya kita akan membedah handshake dan connection lifecycle — header Upgrade dan Sec-WebSocket-Key, kalkulasi Sec-WebSocket-Accept, empat state koneksi, struktur frame, dan mekanisme heartbeat ping dan pong. Ini adalah inti teknis yang membuat protokol ini bekerja.