WebSocket neběží tak úplně nad HTTP (spíš by se dalo říct, že s ním sdílí TCP spojení a má jeho rysy, je to ale samostatný, trochu jinak fungující protokol), je relativní novinkou a například IE ho podporuje až od verze 10. Plus je samozřejmě potřeba řešit i serverovou stranu, např. modulem mod_pywebsocket do Apache (což není zrovna čisté řešení).
http take nieco sice nepodporuje, ale websockety ktore nad http bezia nieco take samozrejme podporuju. Je to perzistentne stavove duplexne event-based spojenie nad neperzistentnym a nestavovym protokolom.
Baterku to ale bude zrat tak ci tak, kedze rezia za WS na urovni http je nepomerne vacsia ako u bezneho tcp socketu
Podobně funguje například i rozšíření IDLE v poštovním protokolu IMAP. Poštovní klient (třeba Thunderbird, na androidím mobilu K-9 apod.) si otevře spojení na server, stáhne nové zprávy a pak pošle příkaz IDLE (jako že nemá co na práci). Jakmile přijde nová zpráva, pošle tím otevřeným spojením klientovi notifikaci, ten si pak hned novou zprávu stáhne. Není tedy potřeba čekat na nějakou periodickou kontrolu.
U webů běžně notifikace takhle samozřejmě nefungují, protože klasický protokol HTTP nic takového nepodporuje. Dělá se to tak, že se z JavaScriptu posílají ve vhodně zvolených periodách dotazy na server, jestli je něco nového. Zvlášť na mobilu je to průšvih, protože hlavně při komunikaci přes mobilní data (a zejména slabém signálu) to žere baterku jak divé.
Čemu přesně na tom nerozumíte? Když jste o novém e-mailu notifikován přes RSS, funguje to tak, že se klient připojí k serveru a zeptá se "neexistuje nějaký nový e-mail" (v RSS se ve skutečnosti ptá spíš na článek, pro notifikace o e-mailech Google RSS trošku zneužil), a server odpoví "ne, nic nového není". A za 5 minut (například) se klient ptá znova na to samé. Typicky se navíc ptá pokaždé v novém spojení, protože server pro RSS nebývá stavěn na to, aby udržoval spoustu neaktivních spojení.
Push notifikace přes GCM fungují jinak. Spojení naváže opět klient a sdělí serveru "až pro mne budeš mít nějakou zprávu, pošli mi jí". A tím to pro danou chvíli končí, server nic neposílá, když žádnou zprávu nemá, ale spojení zůstává otevřené. A když server dostane nějakou zprávu, kterou má klientovi doručit, pošle ji do toho pořád otevřeného spojení. Jediná komunikace navíc tam mohou být občasné pingy, aby se spojení udrželo otevřené.
Výhodou toho druhého řešení je, že když žádná zpráva pro klienta není, nic se neposílá, a že je to spojení navázané jen jedno a proudí přes něj zprávy pro všechny aplikace (na Androidu) a od všech webů (v Chrome). A pak samozřejmě také ta, že servery GCM jsou stavěné na to, aby zvládly spoustu dlouho otevřených spojení.
Aha, vase skleroza nesaha ani o 3 posty zpet:
"S RSS/ATOM by se nějaká služby musel dotazovat třeba každých 5 minut, zda není nový e-mail. Push notifikace se odešle v okamžiku, kdy e-mail přijde, tedy o něm víte okamžitě. "
"přesně z toho důvodu, aby se každá aplikace nemusela pořád dokola dotazovat na stav"
Mr jirsak, zjevne tedy zvanite a nevite o cem, nebylo by to porpve ze.
1) bud mam bezici aplikaci, ktera se aktivne dotazuje definovaneho serveru, zda nema nejaka data (pripadne minimalne musi udrzovat otevrenou konexi => bezet musi tak jako tak)
2) nebo mam server, ktery pasivne nasloucha na nejakem portu az mu prijde nejaky pozadavek. Ten hypoteticky bezet nemusi a nastartuje jej az nejake naslouchadlo reagujici na aktivitu daneho portu.
3) mam aplikaci, kterou mohu nadalku donutit k tomu, aby se pripojovala kam chci, coz je jeste o 10 radu horsi, nez ten naslouchajici server, protoze mi bohate staci derava aplikace a nemusim resit nejaky firewall.
Ale vy zjevne umite data prenaset teleportaci.
Mimochodem, presne takto se chovaji viry, stahuji si data bez vedomi uzivatele odkud se tvurci zrovna hodi a delaji, co se jim zrovna zachce.
Koupili youtube: postujte videa, milí uživatelé, nic se nezměnilo, jenom se nám hezky zaregistrujte a udělte nám souhlas, že do budoucna užíváním teď už naší služby souhlasíte automaticky se vším. Další krok:
Teď nám sdělte jméno a další osobní údaje, ale nebojte, zůstane to soukromé. Další kolečko salámu:No a teď pro změnu můžete postnout videa a komentáře jen pod pravým jménem.
No a dále doba pokročila přátelé, takže si sjednoťte všechny účty pod svým pravým jménem a mimochodem možná o tom nevíte, ale zároveň jste se stali hrdými uživateli Google+.
(tu "real name policy" nakonec částečně vzdali, když jim začali utíkat lidi).
Nejsme evil, jenom normální podvodníci.
ano, zaregistrujete workera (uzivatel to musi potvrdit). Ten pracuje na pozadi aj ked nie ste na stranke z ktorej ste si workera registrovali. Ten potom vie prijimat push a zobrazovat ich kedykolvek kedy je browser zapnuty.
Pouziva to notifikacne api - dalo by sa to riesit aj bez workera, ale uzivatel by musel mat konkretnu stranku otvorenu aby mohol prijimat notifikacie.
Například si zapnete, že chcete být upozorňován na nové e-maily. S RSS/ATOM by se nějaká služby musel dotazovat třeba každých 5 minut, zda není nový e-mail. Push notifikace se odešle v okamžiku, kdy e-mail přijde, tedy o něm víte okamžitě. Dřív to fungovalo tak, že jste musel mít v prohlížeči otevřenou příslušnou stránku, která notifikace posílala, dnes to jde i bez toho. Dokonce ani nemusí žádná webová stránka existovat – notifikaci vám může poslat třeba nějaké zařízení (kotel na chatě, že začal podle programu topit…).
V Androidu už to takhle funguje dávno, přesně z toho důvodu, aby se každá aplikace nemusela pořád dokola dotazovat na stav (a zbytečně tak probouzet mobil a spotřebovávat baterii) – místo toho se zaregistruje, že chce odebírat nějaké zprávy, a při změně stavu pak dostane zprávu o změně.
Např. Gmail upozorňuje na novou poštu okýnkem vpravo dole na obrazovce bez jakéhokoliv doplňku. Jenže musí být spuštěn prohlížeč a načtený Gmail. Předpokládám, že platí i pro tuto technologii, že musí být spuštěný prohlížeč. Jediný bonus je, že nemusí být načtená příslušná stránka (chápu-li to správně).
Blbost - když si to neodsouhlasíte, tak na vás nic nevyskočí a kdykoliv to můžete snadno odvolat.
Naopak je to velmi užitečná služba, která eliminuje spoustu jednorázových udělátek (zhusta různě adware/virusware), které si člověk do počítačů instaluje, protože potřebuje třeba upozornit na novou poštu, novou zprávu na nějaké sociální síti atd. Vlastně se tím smazal poslední rozdíl mezi webovou službou a mobilní aplikací
Moc jsem z článku nepochytil, v čem je tato novinka přínosem proti existujícím RSS/ATOM. Podle popisu mi to přišlo jako úplně to samé, až na to, že u RSS/ATOM je přihlášení uživatele k odběru řešené technicky (uživatel si zařadí zdroj do čtečky), zatímco u Push notifikací doporučením webům, "aby to nabízely umírněně". Co přehlížím?