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 23:22 | Nová verze

    Byla vydána betaverze Fedora Linuxu 45 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 20. října. S konzolí kmscon místo fbcon. Současně byla vydána betaverze Fedora Linux Asahi Remixu 45. S podporou čipů M3.

    Ladislav Hagara | Komentářů: 0
    dnes 21:44 | Nová verze

    Po půl roce vývoje od vydání verze 50 bylo vydáno GNOME 51 s kódovým názvem "A Coruña" (Mastodon). Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře. Videopředstavení na PeerTube a YouTube.

    Ladislav Hagara | Komentářů: 1
    dnes 20:44 | IT novinky

    OpenAI spolupracuje s konkurenty Anthropic a Google DeepMind ze skupiny Alphabet na bezpečnosti umělé inteligence (AI). Globální obavy ohledně existenčních rizik umělé inteligence vzrostly poté, co se o víkendu sešli vedoucí předních amerických firem z odvětví AI a vyzvali k pozastavení vývoje technologie.

    Ladislav Hagara | Komentářů: 0
    dnes 20:33 | IT novinky

    Evropská unie navrhne zákaz sociálních sítí, online her a chatbotů pro děti mladší 13 let a možnost účtu pro děti do 15 let jen se souhlasem rodičů, oznámila šéfka Evropské komise Ursula von der Leyenová v dnešním projevu ve Štrasburku. Návrh předpisu nazvaného EU Kids Act představí Evropská komise ve čtvrtek. Von der Leyenová zdůraznila, že chce, aby se rovněž změnilo základní pravidlo: platformy budou muset dokázat, že jsou bezpečné.

    … více »
    Ladislav Hagara | Komentářů: 4
    včera 22:55 | Nová verze

    Byla vydána Java 27 / JDK 27. Nových vlastností (JEP - JDK Enhancement Proposal) je 9.

    Ladislav Hagara | Komentářů: 0
    včera 17:44 | Nová verze

    Byl vydán Mozilla Firefox 156.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Vestavěný prohlížeč PDF se nyní spouští o 45 % rychleji. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 156 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 14:11 | Nová verze

    Článek na Raspberry Pi představuje nový vzhled desktopu operačního systému Raspberry Pi OS v aktuálním vydání 2026-09-15.

    Ladislav Hagara | Komentářů: 2
    včera 14:00 | Bezpečnostní upozornění

    Nové verze Roundcube Webmailu 1.6.19 a 1.7.4 řeší několik zranitelností.

    vencour | Komentářů: 0
    včera 11:44 | Zajímavý projekt

    Na Kickstarteru běží kampaň na podporu hloupého (jenom volání a SMS) tlačítkového DIY telefonu MAKERphone 2.0 od společnosti CircuitMess postaveného na ESP32-S3 a volitelně také s hodinkami MAKERband. S možností psaní vlastních aplikací. S volitelnými HW rozšiřujícími moduly.

    Ladislav Hagara | Komentářů: 3
    včera 03:33 | Nová verze

    Byla vydána nová verze 10.7 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Přibyly balíčky HomeBox a Scrypted.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (21%)
    Celkem 2683 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: Interaktivní notifikace

    Petr Maleček avatar 8.8.2019 13:28 Petr Maleček | skóre: 29 | Plzeň - Bolevec
    Interaktivní notifikace
    Přečteno: 434×
    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

    Řešení dotazu:


    Odpovědi

    Řešení 1× (Petr Maleček (tazatel))
    8.8.2019 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.2019 10:51 Petr Maleček | skóre: 29 | 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
    8.8.2019 14:02 Radek Isa | skóre: 14
    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.2019 10:52 Petr Maleček | skóre: 29 | 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
    Jendа avatar 8.8.2019 17:06 Jendа | skóre: 78 | blog: Jenda | 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.
    Petr Maleček avatar 9.8.2019 10:50 Petr Maleček | skóre: 29 | 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
    9.8.2019 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.2019 23:39 Petr Maleček | skóre: 29 | 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
    Jendа avatar 9.8.2019 14:25 Jendа | skóre: 78 | blog: Jenda | 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.
    Petr Maleček avatar 9.8.2019 23:42 Petr Maleček | skóre: 29 | 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

    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.