Autor Zpráva
perwin
Profil
Ahoj,
mám takový dotaz. Vím, že lze udělat, aby klient pomocí AJAXu dynamicky volal server. Ale šlo by udělat něco tak, aby server dynamicky volal klienta? Tedy, že by například někdo (první strana) otevřel webovou stránku, která se načte z nějakého serveru (druhá strana). A po chvíli by někdo úplně jiný (třetí strana) zavolal server (druhou stranu), a server by vzápětí znovu kontaktoval prvního uživatele (první stranu), třeba s informací o tom že byl kontaktován třetí stranou. Lze něco takového vytvořit?
Napadlo mě použít třeba Java applet, kde by Java aplikace běžící na serveru kontaktovala applet běžící ze serveru na straně klienta. Nebo by nejspíš šlo jednoduše znovu použít AJAX, který by kontroloval dotazy server, jestli už byl server třetí stranou zavolán, ale to nebude moc efektivní, pokud se budou dotazy posílat třeba každých 10 vteřin (a já chci vidět okamžitou reakci serveru na třetí stranu), navíc by se tedy musely příchozí kontakty od třetí strany na serveru nějakým způsobem zachovávat, a to nechci.
Předem děkuji za odpovědi.
Michal Maršálek
Profil
Ahoj, asi to není příliš elegantní řešení, ale můžeš na serveru uložit instrukci (zprávu) pro klienta a pak se z klienta (v pravidelných intervalech) dotazovat serveru, zda tam pro něj není nějaká instrukce (zpráva).

Edit: Jsem fakt trdlo, že jsem si nevšiml, žes to zmínil.
preca1
Profil
Zdravim,
nechce se mi to zrovna rozebírat, tak ti jenom řeknu, že tomu, co hledáš, se řiká pushing. To, co popisuje Michal Maršálek, se nazývá pulling.
perwin
Profil
preca1:
A nevíš prosím o nějakým českým návodě na internetu, popřípadě knize, kde by byl tento "pushing" dobře vysvětlen?
preca1
Profil
Našel sem jenom článek o WebSocketech z konce roku 2009. Anglicky bys toho asi našel víc
Davex
Profil
perwin:
aplikace běžící na serveru kontaktovala applet běžící ze serveru na straně klienta
Tohle asi nebude fungovat v běžném internetovém prostředí, kde nemůže server přímo kontaktovat klienta (firewall, NAT, proxy v cestě).

Pro zjišťovaní stavu by se asi hodilo použít Long polling.

preca1:
WebSockety mají slabou podporu ve starších prohlížečích.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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