WebSocket чист?
sobes.tech AI
Ҷавоб аз AI
Кушимта даражасидаги протокол, бир TCP уланиши орқали икки томонлама, тўлиқ дуплекс алоқа каналини таъминлайди. Ҳақиқий вақтдаги иловалар учун қўлланилади: чатлар, онлайн ўйинлар, савдо платформалари.
HTTP билан фарқлари:
- HTTP: мижоз сўров юборади, сервер жавоб беради (бир томонлама). Ҳар бир сўров учун янги уланиш ўрнатилади ёки Keep-Alive орқали қайта ишлатилади.
- WebSocket: уланиш ўрнатилгандан кейин, мижоз ва сервер ҳар қандай вақтда маълумот юбориши мумкин (икки томонлама).
Уланишни ўрнатиш:
Илк "қўл сиқиш" (handshake) учун HTTP қўлланилади. Мижоз Upgrade: websocket ва Connection: Upgrade бошлиғлари билан HTTP сўров юборади. Сервер 101 Switching Protocols ҳолати билан жавоб беради.
Маълумотлар рамкалари:
Маълумотларни узатиш рамкалар шаклида амалга оширилади, бу турли маълумот турларини (матн, иккита маълумотлар) юборишга имкон беради.
Уланишни ўрнатиш мисоли (шема):
Мижоз -> Сервер (Янгилаш сўрови)
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Сервер -> Мижоз (Янгилаш жавоби)
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZgYesItU=
Шундан кейин WebSocket рамкалари алмашинуви бошланади.
Фойдалари:
- Кам кечиктириш.
- Сервер юкламасини камайтириш (даими пулинг қилишга эҳтиёж йўқ).
- Ҳақиқий вақтда маълумот юбориш имконияти.
Камчиликлари:
- Мижоз ва сервер томонидан қўллаб-қувватлаш талаб қилинади.
- Оддий HTTP сўровига нисбатан мураккаброқ амалга ошириш.
Javaда WebSocket билан ишлаш учун кўпинча китобхоналар қўлланилади:
- Java API for WebSocket (JSR 356).
- Spring WebSocket.
- Netty.