Long Polling: nədir, necə işləyir və harada istifadə olunur

Müəllif: IT Sectr Dərc olunub: 2026-06-02 Oxuma vaxtı: 8 dəq

Long Polling — bu, müştəri və server arasında qarşılıqlı əlaqə texnikasıdır ki, burada server yeni məlumatlar görünənə və ya vaxt aşımı bitənədək HTTP sorğusunu açıq saxlayır. Dövri sorğulamadan fərqli olaraq, server dərhal boş cavab qaytarmır, məlumatları müştəriyə göndərmək üçün hadisənin baş verməsini gözləyir. MDN Web Docs, 2024-ə görə, Long Polling WebSocket-in əlçatan olmadığı və ya həddindən artıq olduğu real vaxt tətbiqləri üçün tələb olunan həll olaraq qalır.

Əsas məqamlar

  • Long Polling — serverin məlumat görünənə qədər HTTP sorğusunu saxladığı və yalnız bundan sonra müştəriyə cavab göndərdiyi texnikadır.
  • Mexanizm uzun HTTP bağlantılarına əsaslanır: müştəri sorğu göndərir, server dərhal cavab vermir, hadisə və ya vaxt aşımını gözləyir.
  • Fərq Short Polling-dən ondadır ki, server məlumat göndərilməsini başladır, müştəri isə taymerlə serveri sorğulamır.
  • Tətbiq söhbətlər, bildirişlər, fəaliyyət lentləri və real vaxt monitorinq sistemlərini əhatə edir.
  • Məhdudiyyət — açıq sorğuların saxlanması səbəbindən çox sayda eyni vaxtda bağlantı olduqda serverə yüksək yük.

Long Polling nədir

Long Polling — bu, müştəri-server arxitekturasında qarşılıqlı əlaqə nümunəsidir ki, burada müştəri HTTP sorğusu başladır, server isə yeni məlumatlar görünənə və ya müəyyən vaxt aşımı bitənə qədər cavabın göndərilməsini təxirə salır. Cavabı aldıqdan sonra müştəri dərhal növbəti sorğunu göndərir və davamlı bağlantı effekti yaradır.

Long Polling texnikası boş HTTP sorğularının sayını azaltmaq üçün Short Polling-in təkamül inkişafı kimi yaranmışdır. Ənənəvi sorğulamada müştəri hər N saniyədən bir sorğu göndərir və server yeni məlumat olmasa belə cavab verir. Long Polling-də server bağlantının saxlanması mexanizmindən istifadə edir ki, bu da faydasız trafikin həcmini kəskin şəkildə azaldır.

Long Polling-in yaranma tarixi

2011-ci ildə WebSocket-in meydana çıxmasından əvvəl Long Polling vebdə real vaxt təşkilinin əsas üsulu idi. Facebook və Gmail kimi şirkətlər 2010-cu illərin əvvəllərində söhbət və bildirişləri üçün bu texnikadan istifadə edirdilər. High Performance Browser Networking (Grigorik, 2013) tədqiqatına görə, Long Polling o dövrün böyük veb tətbiqlərində real vaxt bağlantılarının 95%-ə qədərini emal edirdi.

Long Polling-in əsas prinsipi

Müştəri serverə standart HTTP sorğusu göndərir. Server sorğunu aldıqdan sonra dərhal cavab qaytarmır — sorğunu gözləmə növbəsinə yerləşdirir. Serverdə hadisə baş verdikdə (yeni mesaj, məlumat dəyişikliyi), server cavab yaradır və onu müştəriyə göndərir. Müştəri cavabı aldıqdan sonra dərhal yeni Long Polling sorğusu yaradır və dövr təkrarlanır.

Long Polling necə işləyir

Long Polling aşağıdakı addımlar ardıcıllığı ilə işləyir. Müştəri server endpointinə HTTP GET sorğusu göndərir. Server sorğunu aldıqdan sonra hadisə növbəsində yeni məlumatların olub-olmadığını yoxlayır. Məlumat yoxdursa, server dərhal cavab göndərmədən sorğunu gözləmə vəziyyətində saxlayır. Saxlama mexanizmi serverin tətbiqindən asılıdır — ən çox callback-lərlə asinxron emal və ya hadisə arxitekturası istifadə olunur.

Server tərəfində hadisə baş verdikdə (məsələn, istifadəçi söhbətdə mesaj göndərdi), server bu məlumatları ehtiva edən HTTP cavabı yaradır və bağlantını bitirir. Müştəri cavabı alır, məlumatları emal edir və dərhal yeni sorğu başladır. Gözləmə müddətində məlumat görünməzsə, server vaxt aşımı bitdikdə boş cavab göndərir və müştəri də bağlantını yenidən yaradır. Timeout adətən yük və gecikmə arasında tarazlıq üçün 30–60 saniyə təşkil edir.

Vaxt aşımları və bağlantı idarəsi

Long Polling konfiqurasiyasının əsas parametri gözləmə vaxt aşımıdır. Çox qısa vaxt aşımı (10 saniyədən az) sorğuların sayının artmasına gətirib çıxarır, texnikanı Short Polling-ə yaxınlaşdırır. Çox uzun (120 saniyədən çox) aralıq proksi və yük balanslaşdırıcıları tərəfindən bağlantının qırılmasına səbəb ola bilər. Əksər ssenarilər üçün tövsiyə olunan dəyər 30–45 saniyədir.

Çoxsaylı hadisələrin emalı

Serverdə bir Long Polling sorğusu zamanı bir neçə hadisə baş verərsə, server onların hamısını bir cavabda ötürməli və ya müştəri tərəfində hadisə növbəsi təşkil etməlidir. Bunun üçün hadisə buferləşdirilməsi istifadə olunur: server sorğunun saxlanması zamanı baş vermiş hadisələri toplayır və onları cavabın məzmununda məlumat massivi kimi ötürür.

JavaScript-də Long Polling tətbiqi nümunəsi

Müasir Fetch API istifadə edərək müştəri tərəfində Long Polling-in sadə tətbiqini nəzərdən keçirək. Müştəri funksiyası sorğu göndərir və cavabı aldıqdan sonra özünü rekursiv çağırır.

js
async function longPoll(url) {
    try {
        const response = await fetch(url);
        const data = await response.json();

        handleData(data);
        longPoll(url);
    } catch (error) {
        console.error("Long Polling xətası", error);
        setTimeout(() => longPoll(url), 3000);
    }
}

function handleData(data) {
    if (data.events && data.events.length > 0) {
        data.events.forEach(event => {
            console.log("Yeni hadisə:", event);
        });
    }
}

longPoll("/api/events");

Bu kod sonsuz Long Polling dövrü yaradır: cavabı aldıqdan sonra funksiya dərhal yeni sorğu göndərir. Bağlantı xətası halında serverə qar uçqunu yükünün qarşısını almaq üçün təkrar cəhddən əvvəl üç saniyəlik gecikmə təyin edilir.

Node.js-də server tətbiqi

Server tərəfində hadisə görünənə və ya vaxt aşımı bitənə qədər sorğunu saxlamaq lazımdır. Node.js-də EventEmitter istifadə edərək tətbiq nümunəsi bu mexanizmi nümayiş etdirir.

js
const express = require("express");
const EventEmitter = require("events");
const app = express();

const eventBus = new EventEmitter();

app.get("/api/events", (req, res) => {
    const timeout = setTimeout(() => {
        res.json({ events: [] });
    }, 30000);

    eventBus.once("new-event", (data) => {
        clearTimeout(timeout);
        res.json({ events: [data] });
    });
});

app.post("/api/events", (req, res) => {
    eventBus.emit("new-event", req.body);
    res.send({ status: "ok" });
});

app.listen(3000);

Server hissəsi yeni məlumatlar görünəndə gözləyən Long Polling bağlantılarına xəbərdarlıq etmək üçün EventEmitter-dən istifadə edir. 30 saniyəlik vaxt aşımına çatdıqda server boş hadisə massivi qaytarır və müştəri yeni sorğu yaradır.

Long Polling nə vaxt tətbiq olunur

Long Polling real vaxtda məlumat çatdırılması tələb olunan, lakin texniki və ya infrastruktur səbəblərdən WebSocket istifadəsinin mümkün olmadığı ssenarilərdə tətbiq olunur. Ən geniş yayılmış hallar — WebSocket bağlantılarını bloklayan korporativ proksi və fayrvallar, həmçinin server tərəfində protokolun məhdud dəstəyi olan mühitlərdir.

  • Söhbətlər və messencerlər — Long Polling WebSocket olmadan HTTP üzərindən işləyən messencerlərin veb versiyalarında mesaj çatdırılmasını təmin edir.
  • Monitorinq panelləri — 1–5 saniyə gecikmə ilə məlumatların aktual olmasının vacib olduğu DevOps metrikaları, jurnallar və siqnallar üçün real vaxt sistemləri.
  • Bildirişlər — Service Workers və Push API istifadə etmədən brauzerdə bildirişlərin çatdırılması.
  • Fəaliyyət lentləri — sosial şəbəkələr və yeni yazılar görünəndə məzmunu avtomatik yeniləyən xəbər lentləri.
  • Birgə iş — istifadəçilər arasında dəyişikliklərin əsas sinxronizasiyası olan Google Docs tipli redaktorlar.

Long Polling seçiminin əsas amili geriyə uyğunluqdur. Bütün HTTP müştəriləri və serverləri bu metodu dəstəkləyir, bu da onu əlavə asılılıqlar olmadan real vaxt üçün universal həll edir. HTTP Archive (2024) məlumatına görə, bütün veb-saytların təxminən 8%-i əsas real vaxt funksionallığı üçün Long Polling-dən istifadə etməyə davam edir.

Long Polling vs Short Polling

Long Polling və Short Polling eyni vəzifəni — məlumatların serverdən müştəriyə çatdırılmasını həll edir, lakin mexanizm və səmərəlilik baxımından əsaslı şəkildə fərqlənir. Short Polling sabit sorğulama intervalından istifadə edir, burada müştəri serverdə yeni məlumatların görünüb-görünməməsindən asılı olmayaraq bərabər vaxt intervallarında HTTP sorğuları göndərir.

XüsusiyyətLong PollingShort Polling
Cavabın başlanmasıServer hadisə zamanı məlumat göndərirServer hər müştəri sorğusuna cavab verir
Çatdırılma gecikməsiMinimal, 1 saniyəyə qədərSorğulama intervalından asılı, 3–60 saniyə
Sorğuların sayıHadisə və ya vaxt aşımı üçün 1 sorğuVaxt vahidində N sorğu (sabit)
Boş vəziyyətdə trafikAşağı (bir açıq sorğu)Yüksək (hər N saniyədən bir sorğular)
Server yüküBağlantıların saxlanmasıTez-tez sorğuların emalı
Tətbiq mürəkkəbliyiOrta (asinxron emal)Aşağı (adi HTTP sorğuları)

Short Polling tətbiqdə daha sadədir, lakin eyni məlumat yeniləmə tezliyində server və şəbəkəyə əhəmiyyətli dərəcədə daha çox yük yaradır. 5 saniyədən az gecikmə tələb olunarsa, Short Polling dəqiqədə onlarla sorğu yaradır, halbuki Long Polling hər hadisə və ya vaxt aşımı üçün bir sorğu istifadə edir. Nadir hadisələri olan tətbiqlər üçün Long Polling trafik baxımından daha səmərəlidir.

Long Polling vs WebSocket

WebSocket — bu, ilkin HTTP əl sıxmasından sonra TCP üzərində işləyən tam hüquqlu ikitərəfli real vaxt protokoludur. Long Polling-dən fərqli olaraq, WebSocket bir daimi bağlantı qurur və serverə yeni HTTP sorğusu yaratmadan istənilən vaxt müştəriyə məlumat göndərməyə imkan verir.

Long Polling və WebSocket arasında seçim bir neçə amildən asılıdır. Uyğunluq: Long Polling bütün proksi və fayrvallar vasitəsilə işləyir, WebSocket korporativ şəbəkələr tərəfindən bloklana bilər. Performans: WebSocket daha kiçik overhead-ə malikdir (tam HTTP başlıqlarına qarşı çərçivə başına 2 bayt), bu mesajların yüksək tezliyində kritikdir. Ölçeklenebilirlik: Long Polling çoxsaylı bağlantıların saxlanması səbəbindən server tərəfində daha çox resurs tələb edir, WebSocket hər sessiya üçün sabit bağlantı istifadə edir.

  • Long Polling — aşağı hadisə tezliyi (dəqiqədə 1–10 hadisə), məhdud infrastruktur və ya köhnə brauzerləri dəstəkləmək zərurəti olan tətbiqlər üçün ən yaxşı seçimdir.
  • WebSocket — saniyədə yüzlərlə mesajla yüksək yüklü real vaxt tətbiqləri (birja məlumatları, onlayn oyunlar, birgə redaktorlar) üçün optimal həlldir.
  • Hibrid yanaşma — bəzi tətbiqlər WebSocket-i dəstəkləməyən müştərilər üçün Long Polling-dən fallback kimi istifadə edir, protokolun avtomatik dəyişdirilməsi ilə.

Mozilla Developer Network (2024) məlumatına görə, WebSocket 2011–2015-ci il versiyalarından etibarən bütün müasir brauzerlər tərəfindən dəstəklənir, lakin korporativ proksi (məsələn, Symantec Blue Coat) onu korporativ şəbəkələrin 15–20%-də bloklamağa davam edir ki, bu da Long Polling-in fallback həlli kimi aktuallığını qoruyur.

Tez-tez verilən suallar

Long Polling sadə sözlərlə nədir?

Long Polling — bu, müştərinin serverdən “yeni məlumatlar görünəndə cavab ver” soruşduğu və serverin hadisəni gözləyərək bağlantını açıq saxladığı zamandır. Məlumatlar görünən kimi server cavab verir və müştəri dərhal eyni sualı yenidən verir.

Long Polling Short Polling-dən nə ilə fərqlənir?

Short Polling-də müştəri hər N saniyədən bir serverdən məlumat olub-olmadığını soruşur, hətta məlumat olmasa belə. Long Polling-də müştəri bir dəfə soruşur və server yalnız məlumat həqiqətən görünəndə cavab verir. Long Polling daha az boş sorğu yaradır və şəbəkə yükünü azaldır.

Nə vaxt WebSocket əvəzinə Long Polling istifadə etməli?

Long Polling WebSocket əlçatan olmadıqda istifadə edilməlidir: qeyri-HTTP protokollarını bloklayan korporativ şəbəkələrdə, köhnə brauzerlərlə geriyə uyğunluq zərurəti olduqda və ya hostinq tərəfində məhdudiyyətlər olduqda. WebSocket yüksək tezlikli məlumat mübadiləsi üçün daha səmərəlidir.

Long Polling üçün hansı vaxt aşımı təyin edilməlidir?

Tövsiyə olunan Long Polling vaxt aşımı 30–45 saniyədir. Daha kiçik dəyər (10–15 saniyə) sorğuların sayını artırır, daha böyük (60+ saniyə) aralıq yük balanslaşdırıcıları tərəfindən bağlantının qırılması risklidir. Vaxt aşımının dəyəri şəbəkə arxitekturasından və gecikmə tələblərindən asılıdır.

Long Polling-in çatışmazlıqları hansılardır?

Əsas Long Polling çatışmazlıqları — minlərlə bağlantı saxlanarkən serverdə yüksək yaddaş istehlakı, üfüqi miqyaslama çətinliyi (mərkəzləşdirilmiş hadisə növbəsi tələb olunur) və həqiqi ikitərəfli əlaqənin olmaması — serverə məlumat göndərmək üçün ayrıca POST sorğuları lazımdır.

Nəticə

  • Long Polling — serverin hadisə görünənə qədər HTTP sorğusunu saxladığı və yalnız bundan sonra müştəriyə cavab göndərdiyi real vaxt məlumat ötürmə texnikasıdır.
  • Mexanizm asinxron HTTP bağlantısının saxlanmasına əsaslanır: server boş cavab qaytarmır, 30–45 saniyə məlumat və ya vaxt aşımını gözləyir.
  • Üstünlük — bütün HTTP infrastrukturu ilə uyğunluq: proksi, yük balanslaşdırıcılar, fayrvallar WebSocket-dən fərqli olaraq Long Polling-i bloklamır.
  • Çatışmazlıq — server tərəfində resurs intensivliyi: hər bağlantı yaddaş tutur və hadisələr olmasa belə asinxron emal tələb edir.
  • Tətbiq — söhbətlər, bildirişlər, monitorinq panelləri, fəaliyyət lentləri və aşağı yeniləmə tezliyi olan birgə redaktorlar.
  • Müqayisə — nadir hadisələrdə Short Polling-dən daha səmərəlidir, lakin yüksək tezlikli ssenarilərdə performans və miqyaslama baxımından WebSocket-dən geri qalır.
  • Tövsiyə — WebSocket əlçatan olmadıqda Long Polling-i fallback kimi və ya aşağı hadisə tezliyi olan sadə real vaxt ssenariləri üçün istifadə edin.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun