Š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.