Bosh sahifa Wiki WebSocket

WebSocket

WebSocketclient va server o‘rtasida doimiy, ikki tomonlama aloqa kanalini yaratadigan web protokol. U browser va serverga bir-biriga real vaqt rejimida ma’lumot yuborish imkonini beradi.

WebSocket chat, live notification, online game, real-time dashboard va collaborative ilovalarda ishlatiladi.

Vazifasi

WebSocket quyidagi vazifalarni bajaradi:

  • client va server o‘rtasida doimiy connection yaratish;
  • real-time ma’lumot almashish;
  • serverdan clientga darhol xabar yuborish;
  • chat va notification tizimlarini qo‘llash;
  • live dashboard va monitoring yaratish;
  • pollingga ehtiyojni kamaytirish;
  • ikki tomonlama communication tashkil qilish.

Masalan, UzbekDevs’da real-time chat bo‘lsa, yangi xabarlar WebSocket orqali darhol kelishi mumkin.

WebSocket qanday ishlaydi?

WebSocket connection HTTP request orqali boshlanadi, keyin protocol upgrade qilinadi.

Oddiy jarayon:

  • browser serverga HTTP request yuboradi;
  • requestda WebSocketga o‘tish so‘raladi;
  • server upgrade’ni qabul qiladi;
  • doimiy WebSocket connection ochiladi;
  • client va server bir-biriga message yuboradi;
  • connection yopilguncha kanal ochiq turadi.

Bu model oddiy HTTP request-response modelidan farq qiladi.

ws va wss

WebSocket ikki asosiy scheme bilan ishlaydi:

  • ws:// — shifrlanmagan WebSocket;
  • wss://TLS bilan himoyalangan WebSocket.

Production muhitda odatda wss:// ishlatiladi, chunki u HTTPS kabi secure connection beradi.

HTTP bilan farqi

HTTP odatda request-response modelida ishlaydi: client so‘rov yuboradi, server javob qaytaradi.

WebSocket esa:

  • doimiy connection saqlaydi;
  • server ham clientga xohlagan vaqtda xabar yubora oladi;
  • real-time aloqa uchun qulay;
  • ko‘p qayta HTTP request yuborishni kamaytiradi.

Polling bilan farqi

Pollingda client serverdan ma’lumot bor-yo‘qligini takror so‘raydi.

WebSocket farqi:

  • connection doimiy ochiq turadi;
  • server yangi ma’lumotni o‘zi yuboradi;
  • ortiqcha requestlar kamayadi;
  • real-time javob tezroq bo‘ladi.

Polling oddiyroq, WebSocket esa real-time tizimlar uchun qulayroq.

Message

WebSocket connection ichida ma’lumotlar message sifatida yuboriladi.

Message formatlari:

Ko‘p web ilovalarda JSON message ishlatiladi.

Connection lifecycle

WebSocket connection hayotiy davri quyidagilardan iborat:

  • connection ochish;
  • handshake;
  • message almashish;
  • ping/pong orqali connectionni tekshirish;
  • error holatlari;
  • connection yopish;
  • qayta ulanish.

Frontend va backend WebSocket connection holatini boshqarishi kerak.

Ping va pong

Ping/pong WebSocket connection tirikligini tekshirish uchun ishlatiladi.

  • ping — bir tomon tekshiruv xabari yuboradi;
  • pong — ikkinchi tomon javob qaytaradi.

Bu connection uzilib qolganini aniqlashga yordam beradi.

Authentication

WebSocket connection ham authentication talab qilishi mumkin.

Authentication usullari:

Authentication modeli ilova arxitekturasiga bog‘liq.

Scaling muammosi

WebSocket doimiy connection saqlagani uchun scaling oddiy HTTP’dan murakkabroq bo‘lishi mumkin.

Scalingda muhim jihatlar:

Ko‘p serverli WebSocket tizimlarda Redis Pub/Sub yoki message broker ishlatilishi mumkin.

WebSocket va SSE farqi

SSE — Server-Sent Events. U serverdan clientga bir tomonlama event yuborish uchun ishlatiladi.

Farqlar:

  • WebSocket ikki tomonlama;
  • SSE asosan serverdan clientga;
  • WebSocket chat va game uchun qulay;
  • SSE notification yoki live feed uchun sodda bo‘lishi mumkin.

Dasturlashdagi o‘rni

WebSocket real-time web ilovalar yaratishda muhim protokol hisoblanadi. U chat, notification, dashboard, multiplayer game va live collaboration tizimlarida client-server o‘rtasida doimiy ikki tomonlama aloqa beradi.

Bog‘liq tushunchalar

HTTP, HTTPS, TCP, Real-time, Webhook, Pub/Sub, Message broker, API, Browser, Server