WebSocket

WebSocket ialah sebuah protokol yang membenarkan komunikasi dwi-arah dalam satu sambungan TCP. Sambungan WebSocket dimulai menerusi persetujuan (handshake) antara pelanggan dan pelayan. Protokol ini menggunakan format yang serupa dengan HTTP supaya pelayan lama faham akan permintaan yang dipersembahkan kepadanya lantas mampu membalas dengan format yang difahami oleh pelanggannya.

Persetujuan protokol WebSocket
Protokol WebSocket dimulakan dengan persetujuan antara pelanggan dengan pelayan. Permintaan pelanggan dan balasan pelayan dalam persetujuan tersebut ditunjukkan di bawah.

Permintaan pelanggan:
GET /sesuatu HTTP/1.0
Host: pelayan.contoh.com
Upgrade: websocket
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: protokolku, protokolmu
Sec-WebSocket-Version: 13
Origin: http://contoh.com

Balasan pelayan:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Access-Control-Allow-Origin: http://contoh.com
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: protokolku

Sama seperti HTTP, setiap pengepala dipisahkan dengan \r\n dan satu baris kosong perlu ditambah pada hujung pesanan. Sec-WebSocket-Accept dijanakan dengan menyambungkan Sec-WebSocket-Key yang diterima daripada pelanggan, dengan rentetan sakti 258EAFA5-E914-47DA-95CA-C5AB0DC85B11. Rentetan hasil penyambungan tadi kemudiannya dicincangkan dengan SHA-1 lalu dikodkan base64.

Kerangka WebSocket
Selepas persetujuan selesai, hubungan dwi-arah pun terbina. Dari sini, pelayan dan pelanggan masing-masing berkomunikasi antara satu sama lain menggunakan kerangka WebSocket samada kerangka teks atau perduaan. Format kerangka WebSocket adalah seperti berikut:

Algoritma penopengan adalah seperti berikut:
  muatan_bertopeng = ""
  bagi indeks dari 0 hingga panjang_muatan
      muatan_bertopeng += muatan[indeks] ^ topeng[indeks mod 4]
</pre>

Skema URI
Skema URI untuk prokol ini ada dua, iaitu ws:// (teks polos) dan wss:// (selamat).

Rujukan

Pautan luar
 Laman tentuan protokol.
Protokol lapisan penggunaan
Istilah Internet
Pembangunan web