Autor Zpráva
foxik_cz
Profil *
Dobrý den,

udělal jsem přítelkyni malý program, který používá ajax pro načítání informací. Jen mi přijde prodleva "1 minuta" moc dlouhá. Jak to dělá například fb, že zobrazuje na mini chatu okamžitě co odeslal protějšek. Určitě to nedělá tím, že obnovuje každou vteřinu :-)

Děkuju
shaggy
Profil
foxik_cz:
Určitě to nedělá tím, že obnovuje každou vteřinu
Skoro aj áno ;-)
Facebook používa long polling, jednoduché vysvetlenie aj s ukážkou kódu nájdeš napr. tu: http://stackoverflow.com/questions/333664/simple-long-polling-example-code
juriad
Profil
Jak to dělá facebook nevím, ale obecně existuje několik přístupů, které se často v praxi kombinují.
1) Long polling - dlouhé spojení
Jistě víš, že na každý požadavek server reaguje odpovědí. Obvykle se snaží odpovědět okamžitě, ale co kdyby odpověděl až v okamžiku, kdy bude dostupná nová zpráva?
V takovém případě, AJAX na klientovi dostane odpověď sice po dlouhém čase, ale v relevantní čas. Jelikož síťové prvky (routery, brány) si udržují přehled o jednotlivých spojeních a spojení zahodí, pokud příliš dlouho nepřijde odpověď, tak se obvykle na serveru nastaví limit: čekej maximálně třeba 30 sekund a pak v každém případě odpověz, klidně i negativně (žádné zprávy za půl minutu nepřišly).
2) Klienti s novějšími prohlížeči mohou využít technologii WebSockets
Jedná se o obousměrnou komunikaci po jediném spojení, které se udržuje naživu po celou dobu. Tato metoda je navíc dost náročná na implementaci na serverové straně. Přesto je pro na tyto úlohy optimální: server může klientovi poslat cokoli kdykoli, nemusí čekat na požadavek z klienta.
foxik_cz
Profil *
Děkuju moc. Pro záměr za kterým jsem to dělal bude nejlepší jak to mám udělané. Jen mne zajímalo jestli by sem to nemohl udělat líp a třeba s menší zátěží pro server. Vím, že to bude znít směšně, ale je slušný předpoklad velké návštěvnosti za den.
Kcko
Profil
foxik_cz:
Jen mne zajímalo jestli by sem to nemohl udělat líp a třeba s menší zátěží pro server. a to je právě onen long pooling viz [#2] shaggy

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0