Sobes.tech
Junior

Šta je WebSocket?

sobes.tech АИ

Одговор од АИ

Protokol na nivou aplikacije koji obezbeđuje dvostranu, punu dupleks komunikacionu kanal preko jednog TCP konekcije. Koristi se za aplikacije u realnom vremenu: čatovi, onlajn igre, platforme za trgovinu.

Razlike u odnosu na HTTP:

  • HTTP: klijent šalje zahtev, server odgovara (jednosmerno). Uspostavlja novu konekciju za svaki zahtev ili je ponovo koristi putem Keep-Alive.
  • WebSocket: nakon uspostavljanja konekcije, klijent i server mogu slati podatke u bilo kom trenutku bez ponovnog uspostavljanja veze (dvosmerno).

Uspostavljanje veze:

Koristi HTTP za inicijalni "handshake". Klijent šalje HTTP zahtev sa zaglavljima Upgrade: websocket i Connection: Upgrade. Server odgovara HTTP odgovorom sa statusom 101 Switching Protocols.

Ramci podataka:

Prenos podataka se vrši u vidu ramci, što omogućava prenos različitih tipova podataka (tekst, binarni podaci).

Primer uspostavljanja veze (schematski):

Klijent -> Server (Zahtjev za nadogradnju)

GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Version: 13

Server -> Klijent (Odgovor na nadogradnju)

HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZgYesItU=

Nakon toga počinje razmena WebSocket ramki.

Prednosti:

  • Niska latencija.
  • Smanjenje opterećenja na serveru (nije potrebno stalno polling).
  • Mogućnost prenosa podataka u realnom vremenu.

Nedostaci:

  • Potreban je podrška na strani klijenta i servera.
  • Složenija implementacija u poređenju sa jednostavnim HTTP zahtevom.

U Javi, za rad sa WebSocket-om često se koriste biblioteke:

  • Java API for WebSocket (JSR 356).
  • Spring WebSocket.
  • Netty.
Šta je WebSocket? — Java - sobes.tech