Long Polling: ano ito, paano ito gumagana at saan ito ginagamit

May-akda: IT Sectr Nai-publish: 2026-06-02 Oras ng pagbabasa: 8 min

Long Polling ay isang pamamaraan ng interaksyon ng kliyente at server kung saan pinapanatili ng server na bukas ang HTTP request hanggang sa lumitaw ang bagong data o mag-expire ang timeout. Hindi tulad ng pana-panahong polling, hindi agad nagbabalik ng walang laman na tugon ang server, kundi naghihintay ng paglitaw ng isang kaganapan upang magpadala ng data sa kliyente. Ayon sa MDN Web Docs, 2024, nananatiling hinahanap na solusyon ang Long Polling para sa mga real-time na aplikasyon kung saan ang WebSocket ay hindi available o kalabisan.

Mga Pangunahing Punto

  • Long Polling — pamamaraan kung saan pinapanatili ng server ang HTTP request hanggang lumitaw ang data at pagkatapos lang nito magpapadala ng tugon sa kliyente.
  • Mekanismo ay batay sa mahabang HTTP koneksyon: nagpapadala ng request ang kliyente, hindi agad tumutugon ang server, kundi naghihintay ng kaganapan o timeout.
  • Pagkakaiba sa Short Polling ay ang server ang nag-iinitiate ng pagpapadala ng data, at hindi nini-poll ng kliyente ang server gamit ang timer.
  • Aplikasyon ay kinabibilangan ng chat, notipikasyon, activity feed, at monitoring system sa real-time.
  • Limitasyon — mataas na load sa server kapag maraming sabayang koneksyon dahil sa pagpapanatiling bukas ng mga request.

Ano ang Long Polling

Long Polling ay isang pattern ng interaksyon sa arkitekturang kliyente-server kung saan ang kliyente ay nag-iinitiate ng HTTP request, at ang server ay nagde-delay ng pagpapadala ng tugon hanggang sa lumitaw ang bagong data o mag-expire ang tinukoy na timeout. Pagkatapos matanggap ang tugon, agad na nagpapadala ang kliyente ng susunod na request, na lumilikha ng epekto ng tuluy-tuloy na koneksyon.

Ang pamamaraang Long Polling ay lumitaw bilang ebolusyonaryong pag-unlad ng Short Polling upang bawasan ang bilang ng mga walang laman na HTTP request. Sa tradisyonal na polling, nagpapadala ang kliyente ng mga request bawat N segundo, at tumutugon ang server kahit walang bagong data. Sa Long Polling, gumagamit ang server ng mekanismo ng pagpapanatili ng koneksyon, na radikal na nagbabawas ng dami ng walang silbi na trapiko.

Kasaysayan ng Long Polling

Bago ang paglitaw ng WebSocket noong 2011, ang Long Polling ay ang pangunahing paraan ng organisasyon ng real-time sa web. Ang mga kumpanyang tulad ng Facebook at Gmail ay gumamit ng pamamaraang ito para sa kanilang mga chat at notipikasyon noong unang bahagi ng 2010s. Ayon sa pananaliksik na High Performance Browser Networking (Grigorik, 2013), pinroseso ng Long Polling ang hanggang 95% ng lahat ng real-time na koneksyon sa malalaking web application noong panahong iyon.

Pangunahing Prinsipyo ng Long Polling

Nagpapadala ang kliyente ng karaniwang HTTP request sa server. Ang server pagkatapos matanggap ang request ay hindi agad nagbabalik ng tugon — inilalagay nito ang request sa waiting queue. Kapag may naganap na kaganapan sa server (bagong mensahe, pagbabago ng data), bubuo ang server ng tugon at ipapadala ito sa kliyente. Ang kliyente pagkatapos matanggap ang tugon ay agad na gumagawa ng bagong Long Polling request, at umuulit ang cycle.

Paano gumagana ang Long Polling

Long Polling ay gumagana ayon sa sumusunod na pagkakasunod-sunod ng mga hakbang. Nagpapadala ang kliyente ng HTTP GET request sa server endpoint. Ang server pagkatapos matanggap ang request ay tinitingnan ang pagkakaroon ng bagong data sa event queue. Kung walang data, pinapanatili ng server ang request sa waiting state, hindi agad nagpapadala ng tugon. Ang mekanismo ng pagpapanatili ay depende sa implementasyon ng server — karaniwang ginagamit ang asynchronous processing na may callbacks o event-driven architecture.

Kapag may naganap na kaganapan sa panig ng server (halimbawa, nagpadala ang user ng mensahe sa chat), bubuo ang server ng HTTP response na may body na naglalaman ng data na iyon at tinatapos ang koneksyon. Natatanggap ng kliyente ang tugon, pinoproseso ang data, at agad na nag-iinitiate ng bagong request. Kung sa panahon ng paghihintay ay hindi lumitaw ang data, nagpapadala ang server ng walang laman na tugon pagkatapos mag-expire ang timeout, at muling gagawa ng koneksyon ang kliyente. Karaniwang 30-60 segundo ang timeout para sa balanse sa pagitan ng load at latency.

Time-out at Pamamahala ng Koneksyon

Ang pangunahing parameter ng pagsasaayos ng Long Polling ay ang wait timeout. Masyadong maikling timeout (mas mababa sa 10 segundo) ay humahantong sa pagtaas ng bilang ng mga request, pinalalapit ang pamamaraan sa Short Polling. Masyadong mahaba (higit sa 120 segundo) ay maaaring maging sanhi ng pagkaputol ng koneksyon ng mga intermediate proxy at load balancer. Ang inirerekomendang halaga para sa karamihan ng mga senaryo ay 30-45 segundo.

Pamamahala ng Maramihang Kaganapan

Kung maraming kaganapan ang naganap sa server sa loob ng isang Long Polling request, dapat ipadala ng server ang lahat ng ito sa isang tugon o mag-organisa ng event queue sa panig ng kliyente. Para dito ginagamit ang event buffering: iniipon ng server ang mga kaganapan na naganap habang pinapanatili ang request at ipinapadala ang mga ito bilang array ng data sa body ng tugon.

Halimbawa ng Implementasyon ng Long Polling sa JavaScript

Tingnan natin ang isang simpleng implementasyon ng Long Polling sa panig ng kliyente gamit ang modernong Fetch API. Ang function ng kliyente ay nagpapadala ng request at recursively tumatawag sa sarili pagkatapos matanggap ang tugon.

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

        handleData(data);
        longPoll(url);
    } catch (error) {
        console.error("Error sa Long Polling", error);
        setTimeout(() => longPoll(url), 3000);
    }
}

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

longPoll("/api/events");

Ang code na ito ay lumilikha ng walang katapusang Long Polling loop: pagkatapos matanggap ang tugon, agad na nagpapadala ang function ng bagong request. Sa kaso ng error sa koneksyon, nagtatakda ito ng tatlong segundong pagkaantala bago muling subukan upang maiwasan ang avalanche load sa server.

Server-side Implementasyon sa Node.js

Sa panig ng server, kailangan panatilihin ang request hanggang lumitaw ang kaganapan o mag-expire ang timeout. Ang halimbawa ng implementasyon gamit ang EventEmitter sa Node.js ay nagpapakita ng mekanismong ito.

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);

Ang bahagi ng server ay gumagamit ng EventEmitter upang ipaalam sa mga naghihintay na Long Polling na koneksyon kapag lumitaw ang bagong data. Kapag naabot ang 30 segundong timeout, nagbabalik ang server ng walang laman na array ng mga kaganapan, at gumagawa ang kliyente ng bagong request.

Kailan ginagamit ang Long Polling

Long Polling ay ginagamit sa mga senaryo na nangangailangan ng paghahatid ng data sa real-time, ngunit hindi posible ang paggamit ng WebSocket dahil sa teknikal o imprastruktura na mga kadahilanan. Ang pinakakaraniwang kaso — corporate proxy at firewall na humaharang sa WebSocket koneksyon, pati na rin ang mga kapaligiran na may limitadong suporta ng protocol sa panig ng server.

  • Chat at messenger — tinitiyak ng Long Polling ang paghahatid ng mensahe sa mga web version ng messenger na gumagana sa pamamagitan ng HTTP nang walang WebSocket.
  • Monitoring panel — real-time system para sa DevOps metrics, log at alert kung saan mahalaga ang pagiging napapanahon ng data na may latency na 1-5 segundo.
  • Notipikasyon — paghahatid ng notipikasyon sa browser nang hindi gumagamit ng Service Workers at Push API.
  • Activity feed — social media at news feed na may awtomatikong pag-update ng content kapag lumitaw ang mga bagong entry.
  • Collaborative na trabaho — mga editor tulad ng Google Docs na may pangunahing synchronize ng mga pagbabago sa pagitan ng mga user.

Ang pangunahing factor sa pagpili ng Long Polling ay backward compatibility. Lahat ng HTTP client at server ay sumusuporta sa pamamaraang ito, na ginagawa itong unibersal na solusyon para sa real-time nang walang karagdagang dependencies. Ayon sa HTTP Archive (2024), humigit-kumulang 8% ng lahat ng website ay patuloy na gumagamit ng Long Polling para sa pangunahing real-time na functionality.

Long Polling vs Short Polling

Long Polling at Short Polling ay lumulutas ng parehong gawain — paghahatid ng data mula server patungo sa kliyente — ngunit pangunahing nagkakaiba sa mekanismo at kahusayan. Ang Short Polling ay gumagamit ng fixed polling interval, kung saan ang kliyente ay nagpapadala ng HTTP request sa pantay na agwat ng oras kahit may bagong data sa server o wala.

KatangianLong PollingShort Polling
Pagsisimula ng tugonServer nagpapadala ng data sa kaganapanServer tumutugon sa bawat request ng kliyente
Latency ng paghahatidMinimal, hanggang 1 segundoDepende sa polling interval, 3-60 segundo
Bilang ng request1 request bawat kaganapan o timeoutN request bawat yunit ng oras (fixed)
Trapiko kapag idleMababa (isang bukas na request)Mataas (request bawat N segundo)
Load sa serverPagpapanatili ng koneksyonPagproseso ng madalas na request
Kompleksidad ng implementasyonKatamtaman (asynchronous processing)Mababa (ordinaryong HTTP request)

Short Polling ay mas simple sa implementasyon, ngunit lumilikha ng mas malaking load sa server at network sa parehong frequency ng pag-update ng data. Kung kinakailangan ang latency na mas mababa sa 5 segundo, ang Short Polling ay lumilikha ng dose-dosenang request kada minuto, habang ang Long Polling ay gumagamit ng isang request bawat kaganapan o timeout. Para sa mga aplikasyon na may madalang na kaganapan, ang Long Polling ay mas episyente sa usapin ng trapiko.

Long Polling vs WebSocket

WebSocket ay isang ganap na bidirectional real-time protocol na gumagana sa ibabaw ng TCP pagkatapos ng paunang pag-shake ng kamay ng HTTP. Hindi tulad ng Long Polling, ang WebSocket ay nagtatag ng isang permanenteng koneksyon at pinapayagan ang server na magpadala ng data sa kliyente anumang oras nang hindi gumagawa ng bagong HTTP request.

Ang pagpili sa pagitan ng Long Polling at WebSocket ay depende sa ilang factor. Kompatibilidad: Long Polling ay gumagana sa lahat ng proxy at firewall, ang WebSocket ay maaaring harangin ng corporate network. Pagganap: WebSocket ay may mas maliit na overhead (2 bytes per frame kumpara sa kumpletong HTTP header), na kritikal sa mataas na frequency ng mensahe. Scalability: Long Polling ay nangangailangan ng mas maraming resources sa panig ng server dahil sa pagpapanatili ng maraming koneksyon, WebSocket ay gumagamit ng fixed na koneksyon bawat session.

  • Long Polling — pinakamahusay na pagpipilian para sa mga aplikasyon na may mababang frequency ng kaganapan (1-10 kaganapan kada minuto), limitadong imprastruktura, o pangangailangang suportahan ang mga lumang browser.
  • WebSocket — optimal na solusyon para sa high-load na real-time na aplikasyon (data ng stock market, online games, collaborative editor) na may daan-daang mensahe bawat segundo.
  • Hybrid approach — ilang aplikasyon ay gumagamit ng Long Polling bilang fallback para sa mga kliyente na hindi sumusuporta sa WebSocket, na may awtomatikong paglipat ng protocol.

Ayon sa Mozilla Developer Network (2024), WebSocket ay suportado ng lahat ng modernong browser mula sa bersyon 2011-2015, ngunit ang corporate proxy (hal. Symantec Blue Coat) ay patuloy na humaharang dito sa 15-20% ng corporate network, na nagpapanatili ng kaugnayan ng Long Polling bilang fallback solution.

Mga Madalas Itanong

Ano ang Long Polling sa simpleng salita?

Long Polling ay kapag hiniling ng kliyente sa server: “sagot kapag lumitaw ang bagong data”, at pinapanatili ng server na bukas ang koneksyon, naghihintay ng kaganapan. Sa sandaling lumitaw ang data, tumutugon ang server, at agad na nagtatanong muli ang kliyente ng parehong tanong.

Ano ang pagkakaiba ng Long Polling sa Short Polling?

Sa Short Polling, tinatanong ng kliyente ang server bawat N segundo kung may data, kahit wala. Sa Long Polling, isang beses nagtatanong ang kliyente, at ang server ay tumutugon lamang kapag may data talagang lumitaw. Ang Long Polling ay lumilikha ng mas kaunting walang laman na request at nagbabawas ng load sa network.

Kailan gagamitin ang Long Polling sa halip na WebSocket?

Long Polling ay dapat gamitin kapag hindi available ang WebSocket: sa corporate network na humaharang ng non-HTTP protocol, kapag kinakailangan ang backward compatibility sa lumang browser, o may limitasyon sa panig ng hosting. Mas episyente ang WebSocket para sa high-frequency na pagpapalitan ng data.

Anong timeout ang dapat itakda para sa Long Polling?

Ang inirerekomendang Long Polling timeout ay 30-45 segundo. Mas maliit na halaga (10-15 segundo) ay nagpapataas ng bilang ng request, mas malaki (60+ segundo) ay mapanganib dahil sa pagkaputol ng koneksyon ng mga intermediate load balancer. Ang halaga ng timeout ay depende sa arkitektura ng network at mga kinakailangan sa latency.

Ano ang mga disadvantages ng Long Polling?

Ang pangunahing disadvantages ng Long Polling — mataas na konsumo ng memory sa server kapag pinapanatili ang libu-libong koneksyon, kahirapan sa horizontal scaling (nangangailangan ng centralized event queue), at kawalan ng tunay na two-way communication — para magpadala ng data sa server ay kinakailangan ang hiwalay na POST request.

Buod

  • Long Polling — pamamaraan ng pagpapadala ng real-time na data kung saan pinapanatili ng server ang HTTP request hanggang lumitaw ang kaganapan at pagkatapos lang nito magpapadala ng tugon sa kliyente.
  • Mekanismo ay batay sa asynchronous na pagpapanatili ng HTTP koneksyon: hindi nagbabalik ng walang laman na tugon ang server, kundi naghihintay ng data o 30-45 segundong timeout.
  • Bentahe — kompatibilidad sa buong HTTP imprastruktura: proxy, load balancer, firewall ay hindi humaharang ng Long Polling hindi tulad ng WebSocket.
  • Disbentahe — masinsin sa resources sa panig ng server: bawat koneksyon ay gumagamit ng memory at nangangailangan ng asynchronous processing kahit walang kaganapan.
  • Aplikasyon — chat, notipikasyon, monitoring panel, activity feed, at collaborative editor na may mababang frequency ng pag-update.
  • Paghahambing — mas episyente kaysa Short Polling sa madalang na kaganapan, ngunit mas mababa kaysa WebSocket sa pagganap at scalability para sa high-frequency na senaryo.
  • Rekomendasyon — gamitin ang Long Polling bilang fallback kapag hindi available ang WebSocket o para sa simpleng real-time na senaryo na may mababang frequency ng kaganapan.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din