Sobes.tech
Junior

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.