Autor Zpráva
quatzael
Profil
Ahoj,

mám dotaz, jak nejlépe vyřešit celkem jednoduchou "peer-to-peer" aplikaci (doufám, že to nazývám správně).

Má to fungovat tak, že registrovaní uživatelé mohou libovolně spouštět 10 minutové odpočítávání. Prakticky něco jako je "kitchen timer".
Tzn., že ho můžou:
1. kdykoli zapnout na délku 10 min a nechat běžet až do konce
2. kdykoli v průběhu odpočítávání vypnout
3. kdykoli v průběhu odpočítávání refreshnout na nových 10 min

A zároveň aby ostatní uživatelé měli možnost všechno toto v reálném čase sledovat a u každého registrovaného uživatele, který spustí odpočítávání, reálně vidět po sekundách zbývající čas (odpočítávání).

Doufám, že jsem to vysvětlil srozumitelně.

Potřeboval bych nějak nastínit řešení. Tzn. jak to řešit s databází, SESSIONS, AJAX apod. Prostě jak to procesně nastavit, aby to fungovalo správně a hlavně efektivně.
Zatím mě napadlo to akorát řešit ukládáním do databáze, pravidelnými AJAX requesty atd. ale nepřipadá mi to moc efektivní.

Mělo by to být programováno v PHP (Symfony 5).

pozn. Asi je na tohle lepší node.js, ale vzhledem k tomu, že jde prakticky opravdu jen o "odpočítávání" a takovýchto registrovaných uživatelů, kteří by to měli zároveň spuštěné, bude v reálu max. 20 až 50, tak si myslím, že PHP na to dokonale postačí..

Děkuji.
blaaablaaa
Profil
quatzael:
Zadavatel:
1. uzivatel si nastavi cas, cilovou hodnotu ulozis do db
2. pri zmene casu updatnes db
3. pri vypnuti nastavis null

Uzivatel:
1. z db si vytahnes cas do konce
2. v js dopocitas cas do konce
3. pres setinterval odpocitavas do konce
4. bud se na pozadi v nejakem intervalu dotazujes, zda odpocet stale plati, nebo, pokud to potrebujes realtime, si nechas otevrene spojeni.
quatzael
Profil
blaaablaaa:
Přesně takhle mě to řešení napadlo..

až na tohle:
pokud to potrebujes realtime, si nechas otevrene spojeni.

Jak se dělá to otevřené spojení?
blaaablaaa
Profil
quatzael:
Googli websocket
quatzael
Profil
blaaablaaa:
websocket se zdá být docela dost složitej koncept..

Chápu to správně, že musím mít fyzicky dva servery (jeden pro HTTP a druhý pro WS)?
Půjde to vůbec provozovat na běžném hostingu?

Druhá věc je nějaký tutoriál pro Symfony Mercure, moc srozumitelného jsem zatím nenašel..
Radek9
Profil
quatzael:
Chápu to správně, že musím mít fyzicky dva servery (jeden pro HTTP a druhý pro WS)?
Nemusíš. Obojí to může běžet na jednom stroji.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0