Mi az a WebSocket?
sobes.tech MI
Válasz az MI-től
Az alkalmazási szintű protokoll kétirányú, teljes dupleks kommunikációs csatornát biztosít egy TCP-kapcsolaton keresztül. Valós idejű alkalmazásokhoz használják: csevegések, online játékok, kereskedelmi platformok.
Különbségek a HTTP-hez képest:
- HTTP: a kliens kérvényt küld, a szerver válaszol (egyenirányú). Minden kéréshez új kapcsolatot létesít vagy Keep-Alive segítségével újrahasználja.
- WebSocket: a kapcsolat felállítása után a kliens és a szerver bármikor adatokat küldhet anélkül, hogy újra kellene kapcsolódniuk (kétirányú).
Kapcsolat létesítése:
HTTP-t használ az első "kézfogás" (handshake) során. A kliens HTTP-kérést küld Upgrade: websocket és Connection: Upgrade fejlécsorokkal. A szerver válaszol egy HTTP-válasszal, amelyben a státusz 101 Switching Protocols.
Adatkeretek:
Az adatátvitel keretekben történik, lehetővé téve különböző típusú adatok (szöveg, bináris adatok) küldését.
Példa a kapcsolat létesítésére (sémásan):
Kliens -> Szerver (Upgrade kérés)
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Szerver -> Kliens (Upgrade válasz)
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZgYesItU=
Ezután megkezdődik a WebSocket keretek cseréje.
Előnyök:
- Alacsony késleltetés.
- Csökkentett szerverterhelés (nem szükséges folyamatos polling).
- Lehetőség valós idejű adatátvitelre.
Hátrányok:
- Támogatás szükséges mind a kliens, mind a szerver oldalán.
- Komplexebb megvalósítás, mint egy egyszerű HTTP kérés.
Java-ban a WebSocket kezeléséhez gyakran használnak könyvtárakat:
- Java API for WebSocket (JSR 356).
- Spring WebSocket.
- Netty.