Autor Zpráva
David1256
Profil
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
V Javascriptu můžeš využít AJAX. ;))
David1256
Profil
Ok díky. K Ajaxu jsem se ještě nedostal, tak mam alespoň, co dělat :-).
Nox
Profil
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
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
Myslíš třeba jako jestli lze táhnout tou a tou figurkou tam a tam?
David1256
Profil
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
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
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
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
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

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0