WebSocket: bu nima, to'liq dupleks aloqa protokoli va qanday ishlaydi

Muallif: IT Sectr Nashr etilgan: 2026-03-06 O'qish vaqti: 8 daq

WebSocket — mijoz va server o'rtasida real vaqtda ma'lumot almashish uchun doimiy ulanishni ta'minlaydigan to'liq dupleks aloqa protokolidir. An'anaviy HTTP so'rovlaridan farqli o'laroq, bu protokol bitta ulanishni o'rnatadi va uni qayta handshakesiz ikki tomonlama uzatish uchun ishlatadi. Mozilla Developer Network (2025) ma'lumotlariga ko'ra, WebSocket real-time ilovalarda HTTP polling bilan solishtirganda kechikishlarni 50% gacha kamaytiradi.

Asosiy ma'lumotlar

  • WebSocket — real vaqtda ma'lumot almashish uchun TCP ustida to'liq dupleks aloqa protokoli
  • Doimiy ulanish har bir so'rovda takroriy HTTP handshake qo'shimcha xarajatlarini bartaraf etadi
  • Kechikish sarlavhalarning yo'qligi tufayli HTTP Long Polling bilan solishtirganda 30–50% kamayadi
  • Protokol barcha zamonaviy brauzerlar va mobil platformalar tomonidan mahalliy API orqali qo'llab-quvvatlanadi
  • Qo'llanish chatlar, onlayn o'yinlar, birja terminallari va IoT qurilmalarini o'z ichiga oladi

WebSocket nima?

WebSocket — TCP ustida ishlaydigan va mijoz bilan server o'rtasida to'liq dupleks kanalni ta'minlaydigan aloqa protokolidir. U IETF tomonidan 2011 yilda RFC 6455 sifatida standartlashtirilgan va barcha zamonaviy brauzerlar, mobil platformalar va server freymvorklari tomonidan qo'llab-quvvatlanadi.

HTTPdan farqli o'laroq, bu erda mijoz so'rov yuboradi va javob oladi, WebSocket esa ikkala tomonga ulanish o'rnatilgandan keyin istalgan vaqtda xabar yuborishga imkon beradi. Bu uni tezkor yetkazib berish talab qiladigan stsenariylar uchun ideal qiladi: chatlar, bildirishnomalar, hujjatlarni birgalikda tahrirlash.

WebSocket protokoli dastlabki handshake uchun HTTP porti 80 yoki HTTPS porti 443 dan foydalanadi, keyin o'z protokoliga o'tadi — minimal sarlavha bilan, atigi 2 bayt, HTTPdagi 800+ bayt o'rniga. Bu xususiyat ko'p sonli xabarlarda sezilarli samaradorlik afzalligini beradi.

Protokolning asosiy xususiyatlari

WebSocket ulanishi HTTP Upgrade so'rovi bilan boshlanadi, keyin protokol ikkilik ramka formatiga o'tadi. Ramkaning o'lchami 2 baytdan 2^63 baytgacha o'zgaradi, bu ham qisqa matnli xabarlarni, ham katta ikkilik ma'lumotlarni uzatishga imkon beradi. Xabarlarning fragmentatsiyasi, mijozdan serverga ma'lumotni maskalash va ulanishni saqlash uchun ping/pong qo'llab-quvvatlanadi.

WebSocket qanday ishlaydi?

WebSocket ulanishini o'rnatish jarayoni ikki bosqichdan iborat: handshake va ma'lumot uzatish. Handshake bosqichida mijoz Upgrade: websocket sarlavhasi bilan HTTP so'rovi yuboradi, server esa 101 Switching Protocols statusi bilan protokol o'zgarishini tasdiqlaydi. Shundan so'ng ulanish to'liq dupleks uzatish rejimiga o'tadi.

WebSocketdagi har bir xabar ramkalarga bo'linadi. Ramka opcode (matn, ikkilik ma'lumot, yopish, ping/pong), yuk uzunligi va mijoz ma'lumotlari uchun maskalash kalitini o'z ichiga oladi. Ramka fragmentlanishi mumkin — nazorat ramkalari (ping/pong) xabar fragmentlari orasida uzatilishi mumkin, bu uzoq uzatish vaqtida ulanishning uzilishini oldini oladi.

js
const ws = new WebSocket('wss://example.com/chat')

ws.addEventListener('open', () => {
    console.log('Ulanish o'rnatildi')
    ws.send('Salom, server!')
})

ws.addEventListener('message', (event) => {
    console.log('Qabul qilindi:', event.data)
})

ws.addEventListener('close', () => {
    console.log('Ulanish yopildi')
})

Yuqoridagi misolda mijob WebSocket obyektini yaratadi, himoyalangan wss:// URLni ko'rsatadi. Ulanish ochilgandan so'ng salomlashish xabari yuboriladi, message ishlovchisi esa serverdan javoblarni qabul qiladi. Yopilishda close ishlovchisi ishga tushadi — bu tarmoq uzilishida qayta ulanish uchun muhimdir.

WebSocket vs HTTP: taqqoslash

WebSocket va HTTP o'rtasidagi asosiy farq o'zaro ta'sir modelidadir. HTTP so'rov-javob sxemasi bilan ishlaydi: mijob so'rov yuboradi, server javob qaytaradi, ulanish yopiladi. WebSocket esa ikkala tomondan istalgan vaqtda uzatishni boshlash mumkin bo'lgan doimiy kanal o'rnatadi.

Past kechikish va doimiy ma'lumot oqimini talab qiladigan ilovalar uchun WebSocket sezilarli darajada samaraliroq. HTTP Long Polling — server ma'lumot paydo bo'lguncha so'rovni ochiq ushlab turadigan alternativa — serverga qo'shimcha yuk yaratadi va ko'plab bir vaqtda ulanishlar tufayli xotira iste'molini oshiradi.

ParametrWebSocketHTTP
ModelTo'liq dupleksSo'rov-javob
Sarlavha2–14 bayt400–800 bayt
Doimiy ulanishHa, bittaYo'q, har so'rov uchun yangi
KechikishPast (1–5 ms)Yuqori (50–200 ms)
Protokolws:// yoki wss://http:// yoki https://

High Performance Browser Networking (Grigorik, O’Reilly) ma'lumotlariga ko'ra, WebSocket real-time stsenariylarda tarmoq kechikishlarini HTTP Long Polling bilan solishtirganda 40–60% kamaytiradi, server yuki esa takroriy handshakelarning bartaraf etilishi tufayli 3–5 marta kamayadi.

WebSocket qayerda qo'llaniladi

Past kechikish va ikki tomonlama aloqa tufayli WebSocket keng doiradagi ilovalarda qo'llaniladi. Asosiy stsenariylarga tezkor xabar almashish, o'yinlarda holatni sinxronlash va moliyaviy tizimlarda bozor ma'lumotlarini uzatish kiradi.

Chatlar va messenjerlar

WebSocket chat ilovalari uchun de-fakto standartga aylandi. Slack, Telegram Web va WhatsApp Web kabi platformalar xabarlarni tezkor yetkazib berish uchun WebSocketdan foydalanadi. Protokol matnli xabarlarni va fayllarni yagona kanal orqali yuborishga imkon beradi, ping/pong mexanizmi esa ulanishni faol ushlab turadi.

Onlayn o'yinlar

Ko'p o'yinchili brauzer va mobil o'yinlar o'yinchilar holatini sinxronlash uchun minimal kechikishni talab qiladi. WebSocket koordinatalar, harakatlar va hodisalarni HTTP so'rov kechikishlarisiz real vaqtda uzatadi. Socket.IO va Colyseus kabi freymvorklar protokol bilan past darajadagi ishni abstraksiya qilib, avtomatik qayta ulanish va xonalarni qo'shadi.

Moliyaviy ilovalar

Birja terminallari va trading platformalari real vaqtda kotirovkalarni olish uchun WebSocketdan foydalanadi. Bir necha millisekundlik kechikish millionlab dollarga tushishi mumkin, shuning uchun moliyaviy APIlar — masalan, Binance WebSocket Streams, Coinbase Pro — bozor ma'lumotlari uchun aynan WebSocket interfeyslarini taqdim etadi.

Mobil ilovalar va IoT

Mobil ishlanmada WebSocket mahalliy APIlar orqali qo'llaniladi: iOSda URLSessionWebSocketTask va Androidda OkHttp WebSocket. Flutter uchun web_socket_channel kutubxonasi, React Native uchun esa react-native-websocket mavjud. IoT qurilmalari telemetriyani uzatish va boshqaruv buyruqlarini olish uchun WebSocketni qo'llaydi, chunki protokol doimiy HTTP-pollingdan kamroq energiya sarflaydi.

WebSocket kod namunalari

Node.js da ws kutubxonasi bilan server qismining namunasini ko'rib chiqaylik — bu JavaScript uchun WebSocketning eng mashhur tatbiqidir. Server ulanishlarni qabul qiladi, xabarlarni qayta ishlaydi va ularni barcha ulangan mijozlarga tarqatadi.

js
const WebSocket = require('ws')
const wss = new WebSocket.Server({ port: 8080 })

wss.on('connection', (ws) => {
    console.log('Yangi mijob ulandi')

    ws.on('message', (data) => {
        console.log('Qabul qilindi:', data.toString())
        ws.send('Server sizning xabaringizni qabul qildi')
    })

    ws.on('close', () => {
        console.log('Mijob uzildi')
    })
})

console.log('WebSocket serveri 8080 portida ishga tushirildi')

Server 8080 portida WebSocket.Server namunasini yaratadi va ulanishlarni kutadi. Har bir yangi mijozga alohida ws obyekti tayinlanadi, server bu obyekt orqali shaxsiy xabarlar yuborishi mumkin. Xabarlarni barcha mijozlarga tarqatish ulanishlar massivining ommaviy aylanishi orqali amalga oshiriladi. Ko'p sonli mijozlar (1000 dan ortiq) bo'lganda Redis orqali masshtablash va avtomatik qayta ulanishni qo'shadigan Socket.IO kabi kutubxonalardan foydalanish tavsiya etiladi.

Barcha mijozlarga xabar yuborish

js
wss.clients.forEach((client) => {
    if (client.readyState === WebSocket.OPEN) {
        client.send('Barcha ishtirokchilar uchun xabar')
    }
})

Yuborishdan oldin readyState tekshiruvi majburiydir: agar mijob allaqachon uzilgan bo'lsa, send chaqiruvi xatolik beradi. WebSocket.OPEN bayrog'i ulanishning faol ekanligini va xabarning yetkazilishini kafolatlaydi.

Mobil iOS ilovalari uchun WebSocket iOS 13 dan boshlab mavjud bo'lgan URLSessionWebSocketTask orqali tatbiq etiladi. Sessiya wss:// protokoli URL bilan topshiriq yaratadi, so'ng send va receive metodlari chaqiriladi. Xabarlarni qabul qilish avvalgi xabarni qayta ishlagandan so'ng keyingi xabarni kutadigan davomiy receive rekursiyasi orqali tashkil etilishi mumkin, bu qayta ulanmasdan doimiy ma'lumot qabul qilishni ta'minlaydi. Android uchun OkHttp WebSocket ishlatiladi, u onOpen, onMessage, onClosing va onClosed callbacklari bilan o'xshash interfeys, shuningdek ulanish uzilganda avtomatik qayta ulanishni taqdim etadi.

Mobil ilovalarda WebSocket bilan ishlashda hayot aylanishini boshqarishni hisobga olish muhimdir: ilova fonda ishlashga o'tganda ulanish tizim tomonidan uzilishi mumkin. iOS da sceneDidBecomeActive delegati orqali oldingi planga qaytganda ulanishni qayta tiklash kerak. Android da ulanishni saqlash uchun Lifecycle-aware komponentlari yoki Service dan foydalanish kerak. Qo'shimcha ravishda, qayta ulanishda exponential backoff ni tatbiq etish tavsiya etiladi — urinishlar orasidagi intervalni 1 soniyadan 30 soniyagacha oshirish, vaqtinchalik tarmoq muammolarida serverga haddan tashqari yuk yaratmaslik uchun.

Ko'p beriladigan savollar

WebSocket HTTP dan nima bilan farq qiladi?

WebSocket ikkala tomon istalgan vaqtda ma'lumot yuborishi mumkin bo'lgan doimiy to'liq dupleks ulanishni o'rnatadi. HTTP so'rov-javob sxemasi bilan ishlaydi, bunda har bir almashish yangi ulanish va to'liq sarlavhalarni talab qiladi. WebSocket bitta TCP kanali va atigi 2–14 bayt sarlavhalardan foydalanadi, bu kechikishlarni keskin kamaytiradi.

WebSocket qaysi portdan foydalanadi?

WebSocket himoyalanmagan ulanishlar (ws://) uchun port 80 va himoyalangan ulanishlar (wss://) uchun port 443 dan foydalanadi. Bu qo'shimcha sozlamalarsiz ko'pchilik proksi serverlar va korporativ firewalllardan o'tishga imkon beradi. Port 443 TLS shifrlash tufayli production muhitlari uchun tavsiya etiladi.

WebSocket mobil ilovalarda qo'llab-quvvatlanadimi?

Ha, WebSocket barcha mobil platformalarda qo'llab-quvvatlanadi. iOS da mahalliy URLSessionWebSocketTask sinfi iOS 13 dan mavjud. Android da — OkHttp WebSocket sinfi va standart java.net.WebSocket. React Native uchun react-native-websocket kutubxonasi mavjud.

WebSocket Secure (wss://) nima?

WebSocket Secure — TLS ustida ishlaydigan himoyalangan protokol versiyasidir. Barcha ma'lumotlar HTTPSdagi kabi shifrlanadi. WSS production ilovalari uchun majburiydir, ayniqsa WebSocket orqali autentifikatsiya tokenlari yoki shaxsiy ma'lumotlar uzatilganda.

WebSocketning qanday alternativlari bor?

Asosiy alternativlar: HTTP Long Polling (server so'rovni ochiq ushlab turadi), Server-Sent Events (serverdan bir tomonlama oqim) va WebRTC Data Channel (peer-to-peer aloqa). Server-Sent Events tatbiq etish osonroq, ammo mijozdan serverga yuborishni qo'llab-quvvatlamaydi.

Xulosa

  • WebSocket — TCP ustida ishlaydigan, RFC 6455 sifatida standartlashtirilgan to'liq dupleks real-vaqt protokoli
  • Doimiy ulanish HTTP handshake xarajatlarini bartaraf etadi, kechikishlarni 1–5 ms gacha kamaytiradi
  • Ramka sarlavhasi atigi 2–14 bayt, HTTP da esa 400–800 bayt
  • Qo'llaniladi: chatlar, onlayn o'yinlar, birja terminallari, IoT va birgalikda tahrirlash
  • WSS TLS shifrlashni ta'minlaydi va production muhitlari uchun tavsiya etiladi
  • Protokol barcha brauzerlar, mobil platformalar va server tillari tomonidan qo'llab-quvvatlanadi
  • Foydalaning WebSocketni real-time funksiyalar uchun, HTTPni esa standart REST so'rovlari uchun

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing