Autor | Zpráva | ||
---|---|---|---|
David1256 Profil |
#1 · Zasláno: 2. 12. 2011, 19:55:25
Dobrý den, chtěl bych udělat deskovou webovou hru (dáma, šachy apod.). Mám to jakž takž promyšlené, ale pořád mi vrtá hlavou, jak udělat toto: 1. hráč hraje a provede se změna pozice figurky, jenže aby tu změnu "pocítil" i hráč na druhé straně, tak by u něj musel proběhnout reload stránky. Jde nějak tento reload na druhé straně vyvolat? Nebo jak byste mi doporučili řešit můj problém? Díky.
|
||
johnl Profil |
#2 · Zasláno: 2. 12. 2011, 20:11:23
V Javascriptu můžeš využít AJAX. ;))
|
||
David1256 Profil |
#3 · Zasláno: 2. 12. 2011, 20:22:47
Ok díky. K Ajaxu jsem se ještě nedostal, tak mam alespoň, co dělat :-).
|
||
Nox Profil |
#4 · Zasláno: 2. 12. 2011, 23:53:29 · Upravil/a: Nox
Případně websockets s fallback AJAXem
Ad AJAX - rozhodně se koukni na "long polling" (jen pozor na http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time (případně aby s tím byl ok apache/nginx)) |
||
Krakatoa Profil |
#5 · Zasláno: 3. 12. 2011, 07:39:20 · Upravil/a: Krakatoa
Nej je to pomocí websocket. Websocket fungují na principu klient (prohlížeč) a server (např. php skript) a data se posílají ze serveru na prohlížeč a opačně automaticky.
http://www.webnt.cz/8-websocket/ No a ty zvládneš udělat ostatní složitější věci? Třeba algoritmus na ověřování tahů? |
||
David1256 Profil |
#6 · Zasláno: 3. 12. 2011, 19:36:40
Myslíš třeba jako jestli lze táhnout tou a tou figurkou tam a tam?
|
||
David1256 Profil |
#7 · Zasláno: 3. 12. 2011, 19:49:10
Teď jsem se koukal na ty websockets. Sice je to důmyslné řešení, ale pokud není podporováno většinou prohlížečů, tak je nepoužitelné.
|
||
Krakatoa Profil |
#8 · Zasláno: 3. 12. 2011, 21:16:17 · Upravil/a: Krakatoa
Tak já bych byl pro to udělat ve websocket, ale pokud teda nechceš, tak navrhuju java aplet, stejně jako to má playok.com
Ten jejich java aplet taky funguje na principu klient - server, nebo se pletu? David1256: „Myslíš třeba jako jestli lze táhnout tou a tou figurkou tam a tam?“ Ano, myslel jsem přesně toto. Nejlepší bude, když se to udělá dvakrát, jak na serveru, tak i u klienta, to první kvůli podvodům a to druhý kvůli rychlosti. A třeba u šachu to zas tak jednoduché není to udělat .-) |
||
David1256 Profil |
#9 · Zasláno: 3. 12. 2011, 21:44:52
Já vím, taky nezačnu u šachů ale u lehčích her :-). Java aplet jsem ještě nepoužíval, tak nevim. Zatím se mi zdá nejlepší varianta Ajax i přesto, že není zrovna 2x efektivní ptát se každou chvílí, jestli se změnil údaj na serveru. Kdyby byl websocket podporovaný skrz všemi prohlížeči, tak bych do toho šel, ale jinak je to do jisté míry nesmysl.
|
||
Chamurappi Profil |
#10 · Zasláno: 4. 12. 2011, 05:05:23
Reaguji na Krakatou:
„Tak já bych byl pro to udělat ve websocket“ Nefunguje všem. „pokud teda nechceš, tak navrhuju java aplet“ Také nefunguje všem. „třeba u šachu to zas tak jednoduché není to udělat .-)“ Pokud zvládne takové omezení naprogramovat u klienta, měl by ho zvládnout i na serveru. Nemyslím si, že to je nějaká velká věda… nejtěžší na tom je pochopit klíčový význam serveru. Reaguji na Davida1256: Začni tím, že uděláš chat. Až dokončíš komunikaci člověka s člověkem, vyměň člověky za hráče, kteří si místo nesmyslného plkání budou posílat informace o tahu. |
||
Nox Profil |
#11 · Zasláno: 4. 12. 2011, 12:13:56 · Upravil/a: Nox
proč Javu na web když to jde nativně?
Chamurappi: proto se dělají "fallbacky" David1256: Škoda že's nečetl co jsem psal, máš tam vše vyřešeno: 1) Můžeš tam mít obě řešení - použije se efektivnější websockets pokud to bude prohlížeč umět, pokud ne - použije se AJAX 2) Nemusíš se ptát každou chvíli - při long polling se ptáš jednou za přibližně min( max_execution_time, průměrný_čas_odpovědi) Takže třeba jen jednou za půl minuty -> což je často méně než ti udělá běžný návštěvník normálního webu, vem si že AJAX request je jakoby normální načtení webové stránky, naopak ještě se neprovádí těch 30 dalších requestů na CSS, JS, obrázky atd. jako u normálního požadavku. Kolem AJAX requestů (a CRONu) je taková trochu performance hysterie |
||
Časová prodleva: 12 let
|
0