abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 01:44 | Nová verze

V únoru 2014 bylo hlasováním rozhodnuto, že výchozím init systémem v Debianu je systemd. V listopadu stejného roku bylo hlasováním rozhodnuto, že o podpoře dalších init systémů v Debianu není celoprojektové hlasování nutné. Po pěti letech už ale hlasování o init systémech a systemd nutné je. Vybírá se z 8 možností. Výsledek hlasování bude zveřejněn po 27. prosinci.

Ladislav Hagara | Komentářů: 0
dnes 00:11 | Zajímavý článek

David Revoy, autor open source webového komiksu Pepper&Carrot, se rozhodl, že svůj komiks vydá také knižně a ve vlastní režii. Komiks již knižně vyšel ve francouzštině ve vydavatelství Glénat. David Revoy jej vydá v angličtině a použije pouze svobodný software. O své zkušenosti se dělí ve dvou příspěvcích na svém blogu. Z plánovaných dvou týdnů práce se staly dva měsíce. Vydání před Vánocemi se nestihne. Kontrolní výtisk má příliš jasné barvy, obrázky v knihách od Glénatu vypadají mnohem lépe, …

Ladislav Hagara | Komentářů: 0
včera 20:44 | IT novinky

Mezinárodní konsorcium W3C (World Wide Web Consortium) vydalo verzi 1.0 základní specifikace WebAssembly a po HTML, CSS a JavaScriptu prohlásilo WebAssembly za čtvrtý oficiální jazyk pro web.

Ladislav Hagara | Komentářů: 1
včera 13:33 | Komunita

Hlasování o obrázku v okně O Inkscapu 1.0 pokračuje druhým kolem. Ze 124 obrázků postoupilo do finálního hlasování 5 s nejvíce hlasy. Výsledek hlasování bude zveřejněn po jeho ukončení, tj. po 15. prosinci.

Ladislav Hagara | Komentářů: 1
včera 02:11 | IT novinky

Společnost Purism představila mobilní telefon Librem 5 USA. Jedná se o telefon Librem 5 vyráběný v USA. Předobjednat jej lze za 1 999 dolarů. Librem 5 lze předobjednat za 699 dolarů.

Ladislav Hagara | Komentářů: 35
5.12. 22:22 | Nová verze

Příspěvek na blogu organizace Electronic Frontier Foundation (EFF) informuje, že Certbot, tj. oficiální klient certifikační autority Let’s Encrypt, dospěl do nové stabilní verze 1.0. Oficiálně tak byla ukončena beta fáze jeho vývoje. Certbot byl představen v květnu 2016.

Ladislav Hagara | Komentářů: 0
5.12. 15:55 | Zajímavý software

Mozilla vydala novou verzi 0.6 svobodného softwaru DeepSpeech pro převod řeči na text. Přehled novinek v příspěvku na blogu Mozilla Hacks.

Ladislav Hagara | Komentářů: 4
4.12. 17:33 | Zajímavý projekt

Dnes měl na YouTube premiéru krátký sci-fi film SKYWATCH. Colin Levy na něm strávil téměř 6 let. Pro vytvoření 3D grafiky byl vybrán Blender. Film byl z části financován z kampaně na Kickstarteru.

Ladislav Hagara | Komentářů: 3
4.12. 05:55 | Zajímavý software

Netflix uvolnil framework pro datovou vědu Metaflow jako open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache 2.0.

Ladislav Hagara | Komentářů: 44
3.12. 21:33 | Nová verze

Byla vydána nová verze 4.1 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Opravena byla také řada bezpečnostních chyb.

Ladislav Hagara | Komentářů: 3
Jaké hodinky nosíte (nejčastěji)?
 (23%)
 (6%)
 (17%)
 (54%)
Celkem 506 hlasů
 Komentářů: 135, poslední včera 20:54
Rozcestník

www.AutoDoc.Cz

Dotaz: Interaktivní notifikace

Petr Maleček avatar 8.8. 13:28 Petr Maleček | skóre: 28 | Plzeň - Bolevec
Interaktivní notifikace
Přečteno: 258×
Ahoj,

přemýšlím, jak vyřešit následující věc:

Ústředna (SIP) při příchozím hovoru vysílá GET požadavek s informacemi o hovoru na můj server. Tento požadavek a jeho data loguji. Má představa ovšem je, že bych chtěl o tomto požadavku nějakým způsobem informovat do prohlížeče. Zatím to dělám poměrně neefektivní cestou, kdy každých 5 sekund na pozadí probíhá kontrola logu, zda se nezměnil a pokud ano, tak vyběhne notifikace v prohlížeči: (část kódu)
    // kontrola poslednich hovoru na ustrednu
    var callCheck = setInterval(function(){
        
        // zjistujeme prubezne stav
        $.getJSON( "/zakaznici/?do=kontrolaHovoru", function(data) {
            if (data)
            {
                // pokud je to nas zakaznik, otevreme kartu
                if (data.zakaznik) {
                    
                    if (Notification.permission === "granted")
                    {
                        notify = new Notification("Příchozí hovor!", {
                            tag: "prichoziHovorZakaznik", 
                            body: "Volá zákazník " + (data.zakaznik.typ === "firma" ? data.zakaznik.nazev : data.zakaznik.jmeno + " " + data.zakaznik.prijmeni) + ", klapka: " + data.klapka,
                            icon: "/images/hotline.jpg"
                        });
                    
                        notify.onclick = function () {
                            window.open("/zakaznici/detail-zakaznika/default/" + data.zakaznik.id + "/sipcall");      
                        };
                    }
                    else {
                        // pokud nejsou notifikace povoleny, tak zastavime kontrolu
                        clearInterval(callCheck);
                    }
                }
            }
        });
		
    }, 5113);           
Já bych chtěl tuto neefektivní metodu pravidelného dotazování requesty nějak zoptimalizovat, třeba za využití nějakého "hooku", kdy by tyto notifikace byly aktivně zasílány serverem do prohlížeče. Takže nějaký "push".

Lze toho dosáhnout za využití kombinace PHP a JS? Nebo musím sáhnout po externích nástrojích jako je třeba právě webhook?

Děkuji za nakopnutí správným směrem.
LinMuck, WinFuck :-P - pokud by mi někdo chtěl pomoct s prostorem na DropBoxu a sám získat 250MB, tak zde.

Řešení dotazu:


Odpovědi

Řešení 1× (Petr Maleček (tazatel))
8.8. 13:37 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Interaktivní notifikace
Zkus kouknout na Server-Sent Events.
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
Petr Maleček avatar 9.8. 10:51 Petr Maleček | skóre: 28 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Interaktivní notifikace
To vypadá, jako schůdná cesta, nepotřebuji obousměrnou kombinaci (takže websocket netřeba), tohle je super.
LinMuck, WinFuck :-P - pokud by mi někdo chtěl pomoct s prostorem na DropBoxu a sám získat 250MB, tak zde.
8.8. 14:02 Radek Isa | skóre: 12
Rozbalit Rozbalit vše Re: Interaktivní notifikace
Ahoj to co potřebuješ je návrhový vzor observer.

Takže ti doporučiji nejdříve nastudovat tento návrhový vzor a následně hledat nějakou implementaci na webu. Stačí do googlu zadat php observer nebo web observe.
Petr Maleček avatar 9.8. 10:52 Petr Maleček | skóre: 28 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Interaktivní notifikace
Podívám se na to, díky za tip, to je asi použitelné.
LinMuck, WinFuck :-P - pokud by mi někdo chtěl pomoct s prostorem na DropBoxu a sám získat 250MB, tak zde.
Jendа avatar 8.8. 17:06 Jendа | skóre: 75 | blog: Výlevníček | JO70FB
Rozbalit Rozbalit vše Re: Interaktivní notifikace
Lze toho dosáhnout za využití kombinace PHP a JS?
Já bych to z pohledu klienta udělal tak, že klient pošle HTTP požadavek, a tento požadavek čeká a buď vrátí informace v okamžiku, kdy je potřeba je zobrazit, nebo vrátí nějakou prázdnou odpověď nejpozději po 20 sekundách (aby se spojení nerozpadlo) a pak klient zadá další požadavek.

Udělat serverovou část v PHP bez pollingu mi přijde komplikované, protože PHP je pro každý požadavek tak nějak samostatný kontext a je složité posílat mezi nimi notifikace. Nemohl bys to psát třeba v bottle.py? Tam snad fungují fronty které se dají sdílet mezi požadavky.
Reverse-engineer? I can barely forward-engineer!
Petr Maleček avatar 9.8. 10:50 Petr Maleček | skóre: 28 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Interaktivní notifikace
Já to mám tedy trošku jinak, klient pošle požadavek a buďto se vrátí informace o hovoru (hovor nesmí být starší 15 vteřin) a uloží tuto informaci do SESSION (aby nedošlo k oznámení totožného hovoru třeba 2x, pokud bude mít někdo otevřen totožný web vícekrát), nebo se nevrátí nic. A za 8 vteřin opět stejné kolečko.

Útěchou je mi, že tento request na serveru absolutně není znát (není to ani napojení na databázi, je to jen načtení posledního řádku z logu, který se ukládá jen v RAMDISKu). Ale to je jen zatím. Pokud by se totožná funkce rozšířila, nebo bych se pustil třeba do chatu, tak tam už to chce něco "živějšího", než GET requesty v intervalech.
LinMuck, WinFuck :-P - pokud by mi někdo chtěl pomoct s prostorem na DropBoxu a sám získat 250MB, tak zde.
9.8. 11:06 luky
Rozbalit Rozbalit vše Re: Interaktivní notifikace
Ten vzor, co popsal Jenda, se jmenuje kometa - https://en.wikipedia.org/wiki/Comet_(programming)

Petr Maleček avatar 9.8. 23:39 Petr Maleček | skóre: 28 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Interaktivní notifikace
Ano, jen to má trochu háček v tom, že na pozadí se těch requestů spoušti několik (kontrola nástěnky, kontrola počtu poptávek, kontrola přiřazených požadavků, kontrola novych SMS, ...) a tyto požadavky se vždy zpracovávají postupně, vždy se čeká na dokončení předchozího requestu. Pokud bych to udělal výše uvedeným stylem od Jardy, tak bude 20 vteřin trvat request, mezi tom se ve frontě objeví další požadavky, které se spouštějí třeba co deset sekund, původní požadavek se ukončí, v lepším případě proběhnou další jiné požadavky z fronty a pak se zase dostane na samotnou kontrolu hovoru a 20 vteřin požadavek. Jenže v praxi mi to tak nikdy nefungovalo. Vždy byl nějaký z požadavků přerušen a zpracován jiný nebo se narušila časová osa původního návrhu požadavků. Nevím, jestli dělám něco špatně, ale paralelní zpracování požadavků (ajax) mi nefunguje. Vždy se zpracovávají postupně a občas se nějaký abortne kvůli jinému.
LinMuck, WinFuck :-P - pokud by mi někdo chtěl pomoct s prostorem na DropBoxu a sám získat 250MB, tak zde.
Jendа avatar 9.8. 14:25 Jendа | skóre: 75 | blog: Výlevníček | JO70FB
Rozbalit Rozbalit vše Re: Interaktivní notifikace
Já to mám tedy trošku jinak, klient pošle požadavek a buďto se vrátí informace o hovoru (hovor nesmí být starší 15 vteřin) a uloží tuto informaci do SESSION (aby nedošlo k oznámení totožného hovoru třeba 2x, pokud bude mít někdo otevřen totožný web vícekrát), nebo se nevrátí nic. A za 8 vteřin opět stejné kolečko.
Já to chápu, ale tvůj přístup znamená, že když posíláš požadavek každých 8 sekund, tak můžeš mít až 8 sekund staré informace. Můj přístup ti změny pošle ihned.
Reverse-engineer? I can barely forward-engineer!
Petr Maleček avatar 9.8. 23:42 Petr Maleček | skóre: 28 | Plzeň - Bolevec
Rozbalit Rozbalit vše Re: Interaktivní notifikace
Ano, muže. Těch 8 sekund je jakoby OK hodnota, protože telefon začíná zvonit až 5 vteřin po zvolení klapky na ústředně. Takže s předstihem. Nejde mi ani tak o ten čas jak o ten fakt, že je to v rámci pravidelných požadavků na server.
LinMuck, WinFuck :-P - pokud by mi někdo chtěl pomoct s prostorem na DropBoxu a sám získat 250MB, tak zde.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.