Notifikace o dlouho trvající operaci na pozadí rubrika: Programování: JavaScript

6 Twista
položil/-a 23.7.2014

Zdravím,

Řeším problém kdy mám v prototypu nějakou uživatelskou akci, po které se na pozadí (na serveru) provádí delší operace (aktuálně 30s, předpoklad je cca 1-5 min) a chtěl bych uživatele průběžně informovat o stavu.

Zároveň bych chtěl zohlednit i to, když uživatel z dané stránky (kde spustil event) odejde na jinou stránku, tak mít možnost stále nějakým způsobem ukazovat notifikace (není podmínkou, ale řeším i to kdy odejde a znovu přijde zpět)

Jak by jste podobnou situaci řešili ? Serverside je psaná v PHP, klientskou část pak z větší části v Angularu.

díky moc :)

Komentáře

  • Honza Břešťan : Mozna je to overkill, ale co spolu s tou akci otevrit WebSocket kanal, kterym muze server pushovat nejake prubezne updaty? Po skonceni akce se zase zavre. WS ale asi nezustane otevreny, pokud uzivatel odnaviguje na jinou stranku. 24.7.2014
  • Twista : o WS jsem přemýšlel ale furt si nejsem jist. Řešením odnavigace by mohlo být uložení ref do cookies a znovuvytvoření spojení. Ještě o tom popřemýšlím. Díky! 24.7.2014
odkaz
6 Žížala
odpověděl/-a 24.7.2014

Tohle řeším tak, že

  1. Takto dlouho zpracovávaný proces běží jako shell script, ne jako web page
  2. Průběžně si ukládám stav zpracování do tabulky, vazba pomocí sessionid a hash pro daný task
  3. Tím pádem může uživatel stránku opustit, může mít více procesů, mám tam omezení na 1 process pro free, 3 pro basic a 10 pro profi ...
  4. Pro ověřování stavu mám postaveni API, kam se dotazuju pomocí AJAXu (JSON) a průběžně zveřejňuji stav v pomocné plovoucí liště

Komentáře

  • Twista : Trošku jsem se chtěl poolovaní vyhnout, ale určitě to je taky možnost. Díky za odpověď 24.7.2014
  • tuma.vojta : Pokud nechceš používat poolování, tak už zbývají jenom ty WebSockety. 24.7.2014
  • Anonym : Websockety su overkill, v pohode staci "Server Side Events". Pracu zadas obycajnym POST requestom, cez SSE server posiela progress/notifikacie. Nic tazke v AngularJS, mam to uz vyskusane. 24.7.2014
  • Twista : Díky @srigi za nasměrování - určitě se na to podívám. 25.7.2014
  • bazo : @srigi vies posielat SSE aj z php? 7.8.2014
  • maki : @bazo http://www.w3schools.com/html/html5_serversentevents.asp je tam server-side code example 19.8.2014
  • petersirka : SSE nepodporuje IE. 21.8.2014

Pro zobrazení všech 5 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.