Przeliczanie czasu w rzeczywistości |
Przeliczanie czasu w rzeczywistości |
6.10.2016, 01:59:44
Post
#1
|
|
Grupa: Zarejestrowani Postów: 342 Pomógł: 15 Dołączył: 30.08.2011 Ostrzeżenie: (0%) |
Cześć,
takie mnie nurtuje pytanie. Jeżeli ktoś grał w plemiona to wie jak wygląda system budowania. Chodzi o to, że klikamy jakiś budynek z czasem np 3h i po 3h on jest wybudowany. W jaki sposób to jest zaprojektowane? A w szczególności jak wykonana jest operacja przerywania budowania? Bo podejrzewam, żę jak wybudujemy coś to dane idą do bazy. PHP + NODE.JS+ websocety? Teoretycznie; nie dało by się tego zrealizować PHP + js? coś w stylu, klikamy, odpala się zegar w js i po odpowiednim czasie wykonywany jest insert do bazy? (mega prymitywne ) p.s temat jest luźny, bo nie tworzę czegoś takiego a po prostu z ciekawości pytam. |
|
|
6.10.2016, 07:11:09
Post
#2
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 40 Dołączył: 2.06.2016 Skąd: Olsztyn Ostrzeżenie: (0%) |
Dlaczego nie, w takiej prostej wersji PHP + JS jest to możliwe (przykład plemion - ta gra pamięta moje czasy edukacji szkolnej ).
Podczas wywołania budowania zapisujesz znacznik czasowy w którym rozpoczęto budowę i planowany czas zakończenia, różnica tego jest progresem. JS to tylko prezentacja danych może być w formie licznika odmierzającego w dół. -------------------- |
|
|
6.10.2016, 11:45:48
Post
#3
|
|
Grupa: Zarejestrowani Postów: 342 Pomógł: 15 Dołączył: 30.08.2011 Ostrzeżenie: (0%) |
A profesjonalnie na jakiej zasadzie jest to budowane?
|
|
|
6.10.2016, 21:51:35
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) |
wspomniałeś o websocketach - którą wersję plemion próbowałeś zdebugować - podejrzewam, iż 2 gdyż 1 nie posiada websocketów...
jak wspomniał emstawicki dane tam są przedstawiane w formie liczników w dół, po stronie serwera są zapisywane zdarzenia i w teorii powinny one wykonywać się po kolei, dane możesz zapisywać np. w bazie i trochę przed pobrać do deamon'a który te zdarzenia w dokładniejszym czasie obrobi... cała główna koncepcja jest taka, iż w 1 to nawet nie musiałeś mieć włączonej obsługi JS by w to pograć ;]... wszystko odbywało się po stronie serwera, oczywiście przy wyłączonym JS zdarzenie widziałeś dopiero po odświeżeniu strony... muszę przyznać, iż był okres gdy ta gierka mnie wciągnęła... w sumie dzięki niej daaawno temu w przeszłości dobrze poznałem JS do userscript oraz automatyzujących zadanie skryptozakładek, trochę o bazach danych i algorytmach do generowania sobie optymalnych linków z faremkami gdyż z mapki źle się farmiło };-> -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
6.10.2016, 21:57:22
Post
#5
|
|
Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%) |
Poczytaj o long-pollingu.
-------------------- Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+ Strona Domowa | Elradia MMORPG FireFox: make the web better. |
|
|
6.10.2016, 22:20:21
Post
#6
|
|
Grupa: Zarejestrowani Postów: 342 Pomógł: 15 Dołączył: 30.08.2011 Ostrzeżenie: (0%) |
Czyli to tak na prawdę wszystkie zdarzenia w czasie rzeczywistym (czas budowy, rosnące surowce bez przładowania itd) to webSocety i pewnie jakiś node.js ? to jest ta sama zasada działania zdaje się jak przy powiadomieniach w czasie rzeczywistym?
ogólnie poczytam sobie o tym, porobie jakieś ćwiczenia, bo ciekawią mnie zagadnienia eventów w czasie rzeczywistym. |
|
|
6.10.2016, 22:25:52
Post
#7
|
|
Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%) |
Nie, to nie są websockety. To jest long-polling z wykorzystaniem samego HTTP. Klikasz na budowę budynku, do serwera leci requet, serwer przelicza czas kiedy budowa się zaczęła, odsyła do przeglądarki ile ma ona czekać, przeglądarka uruchamia timer a po tym czasie odświeża automatycznie stronę. Nic wiecej tutaj nie potrzeba. A jak koniecznie chcesz się bawić websocketami to zamiast mieszkać PHP z Node.js użyj albo samego Node.js albo WebSocketów w PHP.
Ten post edytował Skie 6.10.2016, 22:26:43 -------------------- Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+ Strona Domowa | Elradia MMORPG FireFox: make the web better. |
|
|
8.10.2016, 15:19:00
Post
#8
|
|
Grupa: Zarejestrowani Postów: 342 Pomógł: 15 Dołączył: 30.08.2011 Ostrzeżenie: (0%) |
Czyli jeżeli chcę zrobić jakieś tam powiadomienia na stronę to mogę wykorzystać
long polling? albo node + web socet? jak się ma ratchet do połączenia noda i websocetów? dla prostej apki? są jakieś problemy o który warto wspomnieć? (ruch na stronie raczej mały) |
|
|
8.10.2016, 15:27:24
Post
#9
|
|
Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%) |
Zaleznie od potrzeb używasz albo WebSocket, albo HTTP Long-Polling. To pierwsze jest wydajniejsze, ale wymaga customowej logiki, bo nie jest zgodne z tym jak działa HTTP w 100%. Z tego co piszesz to long-polling będzie wystarczajace.
WebSocket to nie jest wynalazek node'owy. Jest to pewien standard. Websocketów możesz używać również w PHP, Pythonie, Ruby i zapewne wielu innych językach programowania. Ratchet to implementacja WebSocketów w PHP, dzięki czemu nie potrzebujesz Node.js by ich używać. Ratchet jest wydajniejszy od implementacji node'owych, ale nie jest aż tak enterprise'owy jak np socket.io. A jak myślisz nad WS w PHP to oprócz ratcheta polecam jeszcze sprawdzić Kraken/Network Ten post edytował Skie 8.10.2016, 15:32:42 -------------------- Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+ Strona Domowa | Elradia MMORPG FireFox: make the web better. |
|
|
8.10.2016, 15:54:52
Post
#10
|
|
Grupa: Zarejestrowani Postów: 342 Pomógł: 15 Dołączył: 30.08.2011 Ostrzeżenie: (0%) |
Przetestuje ratcheta, potem ajaxa w long polling i zdecyduje, choć pewnie masz rację, że long polling będzie w moim wypadku lepsze. Dzięki za rozjaśnienie
|
|
|
Wersja Lo-Fi | Aktualny czas: 28.03.2024 - 17:38 |