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:[1]
| Medan | Saiz (bit) | Maksud | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Fin | 1 | Menandakan samada pesanan ialah pesanan terakhir atau bukan. | ||||||||||||||||||
| Bit-bit simpanan | 3 | Bit-bit yang tidak dunakan dan disimpan untuk masa hadapan. Sentiasa 0 melainkan jika digunakan oleh mana-mana sambungan (extension).
| ||||||||||||||||||
| Opkod | 4 | Memberi panduan kepada penerima pesanan tentang muatan data yang dibawa oleh kerangka.
| ||||||||||||||||||
| Bertopeng | 1 | Penanda samada muatan ditopengkan atau tidak. Biasanya sentiasa 1 bagi pesanan yang datang daripada pelanggan.
| ||||||||||||||||||
| Panjang muatan | 7 | Panjang muatan (dalam bait) oleh pesanan jika panjang kurang daripada 125 bait. | ||||||||||||||||||
| 7+16 | Jika nilai 7 bit pertama ialah 126, maka panjang muatan disimpan dalam 16 bit seterusnya. | |||||||||||||||||||
| 7+64 | Jika nilai 7 bit pertama ialah 127, maka panjang muatan disimpan dalam 64 bit seterusnya. | |||||||||||||||||||
| Kunci penopeng | 32 | Setiap bait ialah kunci yang digunakan untuk menopengkan muatan. | ||||||||||||||||||
| Data muatan | x + y | Data yang dibawa oleh pesanan. | ||||||||||||||||||
| Data sambungan | x | Sentiasa 0 melainkan penggunaan sambungan (extension) telah dipersetujui.
| ||||||||||||||||||
| Data aplikasi | y | Bait-bait lebihan dalam kerangka ialah data aplikasi. |
Algoritma penopengan adalah seperti berikut:
muatan_bertopeng = ""
bagi indeks dari 0 hingga panjang_muatan
muatan_bertopeng += muatan[indeks] ^ topeng[indeks mod 4]
Skema URI
Skema URI untuk prokol ini ada dua, iaitu ws:// (teks polos) dan wss:// (selamat).
Rujukan
- ^ "RFC 6455 - The WebSocket Protocol". IETF. Dicapai pada 6 Mac 2015.
Pautan luar
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.