Sobes.tech
Junior

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.