27.3.2015
Před pár týdny jsem představil jednoduchý http server pro Qt a univerzální API pro přístup k datům aplikace – dnes si ukážeme, jak používat HTML5 proud událostí.
HTTP server pro C++ a Qt
Univerzálni API
Koukněte se, jak to běhá
Dokumentace
Download
Server používáme v několika případech i pro embedded aplikace postavené na Beaglebone black. Už minule jsem ozřejmil obvyklou strukturu stránek:
Chcete mít svá data uložená v malé krabičce, přitom přístupná z tabletu, telefonu či svého počítače?
Zavolejte: +420 777 566 384 nebo napište na adresu info@hobrasoft.cz
Podívejte se na živý příklad. Jak to vlastně funguje?
Pohled do zdrojového HTML stránky ukáže celkem jednoduchou tabulku bez dat (ostatní části HTML teď pomíjím):
<table id="tabledata"> <thead><tr><th>ID</th><th>Text</th><th>Value</th><th></th></tr></thead> <tbody></tbody> </table>
Tabulka je prázdná – o její naplnění daty se stará JavaScript a mechanismus HTML5 proudu událostí:
$(document).ready(function(){ var source = new EventSource("/example/events"); source.addEventListener("status", function(event) { var data = JSON.parse(event.data); var id = data.id; var rowdata = "" + " \n"; var rowelement = $("table#tabledata tbody tr#"+id); if (rowelement.text() == "") { $("table#tabledata tbody").append( rowdata ); } else { rowelement.replaceWith( rowdata ); } }, false); });" + data.id + " " + "" + data.text + " " + "" + data.counter + " " + "detail " + "
První řádek je konstrukce z jQuery, druhý řádek instaluje proud událostí a na dalších řádcích je samotné zpracování události. Kód nepracuje v prohlížeči MS Explorer, tento prohlížeč nepodporuje HTML5 proudy událostí. Ostatní prohlížeče obvykle fungují bez problémů.
V JavaScriptu si povšimněte řádku, který instaluje proud událostí:
var source = new EventSource("/example/events");
Řetězec "/example/events" je relativní URL adresa odkazující na proud událostí. Jak vytvořit takovou adresu pomocí HobrasoftHttp serveru jsem popsal v dřívějším zápisku.
HTML5 proudy událostí nejsou nic tajuplného, používají se snadno a efektivně. V češtině najdete o proudech událostí mnohem lépe zpracované vysvětlení třeba zde:
Zdroják: HTML5 EventSource: Serverem zasílané události proudí nepřetržitě…
V tomto článku jsem chtěl pouze upozornit na zajímavou a nenáročnou technologi. Moje zkušenosti ukazují, že programátoři embedded aplikací - jednočipové počítače, Beaglebone, Raspberry a podobně - mají často jen mlhavou představu o webových technikách. A platí to i naopak - vývojaři webových aplikací mají o možnostech hardware představy ještě matnější. Přitom oba světy už lze dnes propojit poměrně snadno.