[ maddog_srb @ 14.02.2010. 15:40 ] @
Zanima me da li se serverski deo chat aplikacija obavlja preko php socket-a, tj. da li je to solidno resenje?
Mislim da je za klijentski deo najbolji flash...

Nemam nekog iskustva sa socket-ima, pa me samo zanima da li sam na dobrom putu...

Ako neko zna nesto sto bi trebalo da znam i ja, neka postuje... hVaLa...
[ kazil @ 14.02.2010. 17:13 ] @
Najobicniji Ajax/PHP chat... Gde si zalutao medju sockete? :)
[ maddog_srb @ 14.02.2010. 18:34 ] @
Pa nemam pojma, tu sam se nasao :)

Elem, chat mi je nekako izgledao najlakse za realizaciju, jer u stvari sam razmisljao o nekoj multiplayer igrici,
a chat mi je otprilike, slican tome... Potrebno mi je da na reakciju jednog igraca/ucesnika u chat-u, server obavesti ostale...

Da li je i u ovom drugom slucaju bolji AJAX/PHP/MYSQL ili FLASH/PHP, i zanima da li sam napravio dobro poredjenje, da ne ispadne da poredim babe i zabe...
[ Goran Rakić @ 14.02.2010. 18:39 ] @
Tvoj preglednik (engl. browser) kada zahteva stranicu od veb servera pravi utičnicu (engl. socket). Preko te utičnice preglednik postavlja zahtev, a server šalje kod stranice za prikaz.

Te „Socket“ funkcije u PHP-u su korisne kada želiš da iz tvoje skripte pristupiš nekom drugom serveru (ako je u pitanju veb server možeš da koristiš i funkcije za čitanje datoteka višeg nivoa). Na primer pomoću njih možeš da pristupiš IRC ili Jabber serveru, ili nekoj serverskoj aplikaciji u internoj mreži i onda, recimo, odgovor proslediš kao deo stranice posetiocu.

E sada u vezi ćaskanja (engl. chat), šta želiš da postigneš? Pristupnu tačku standardnim protokolima za ćaskanje poput meebo.com, mogućnost da posetioci tvog sajta međusobno ćaskaju preko sajta ili nešto treće?


PS - MySQL je baza podataka, tu su tablice u kojima možeš da čuvaš podatke. Kako su sve baze uvek spore recimo da je to „baba“. Flash možeš da porediš sa HTML/JavaScript, on ti određuje sloj prikaza u pregledniku. Kako tu uvek nešto skakuće i klikće, recimo da je to „žaba“. PHP je programski jezik, obično se izvršava na strani servera, dakle kada stigne zahtev, PHP nešto uradi i pošalje odgovor nazad, a taj odgovor se prikazuje u sloju prikaza. PHP skript je mesto gde prepakuješ babu, oslušneš šta žaba krekeće i baciš novu žabu u baru...
[ maddog_srb @ 14.02.2010. 19:29 ] @
Citat:

PS - MySQL je baza podataka, tu su tablice u kojima možeš da čuvaš podatke. Kako su sve baze uvek spore recimo da je to „baba“. Flash možeš da porediš sa HTML/JavaScript, on ti određuje sloj prikaza u pregledniku. Kako tu uvek nešto skakuće i klikće, recimo da je to „žaba“. PHP je programski jezik, obično se izvršava na strani servera, dakle kada stigne zahtev, PHP nešto uradi i pošalje odgovor nazad, a taj odgovor se prikazuje u sloju prikaza. PHP skript je mesto gde prepakuješ babu, oslušneš šta žaba krekeće i baciš novu žabu u baru...


Ovaj deo sam znao, mada ne tako "zivopisno" :), mada OK, ja sam pokrenuo to zivotinjsko carstvo...
Mysql sam ubacio iz razloga koji dole sledi...

Citat:

E sada u vezi ćaskanja (engl. chat), šta želiš da postigneš? Pristupnu tačku standardnim protokolima za ćaskanje poput meebo.com, mogućnost da posetioci tvog sajta međusobno ćaskaju preko sajta ili nešto treće?


Da vishe ne zabunjujem ljude, mislim da je najbolje da izadjem sa konkretnim problemom, lakse cete shvatiti sta je pisac hteo da kaze.

Zeleo bih da napravim Texas Holdem Poker multiplayer igricu. Deo oko karata, deljenje, ko je bolji i ostalo sam vec napravio...

Sada sam dosao do dela gde treba da vise korisnika povezem na ovu jednu skriptu, podelim im karte, i znate vec kako dalje ide igra... Problem mi je sto ova skripta mora da se izvrsava neprekidno, tj. sve dok ima igraca, onda, kada jedan igrac odigra, moram da obavestim ostale o njegovoj odluci...

Posto mi je ovo bilo najslicnije chat-u zato sam i postavio pitanje u vezi chat-a, a ne multiplayer igrice, jos jednom se izvinjavam ako sam ovim stvorio neku zabunu...

[ Goran Rakić @ 14.02.2010. 21:00 ] @
Server čuva podatke o partiji (igrači, stanje, podeljene karte,...), kako si ti predvideo, u MySQL bazi. Preglednik svakih par sekundi šalje zahtev serveru za nove informacije. Ovo može biti Ajax, Flash ili glupi HTTP Meta Refresh. Svako dobija samo informacije o svojim kartama i stanju partije. Po dobijanju novih informacija preglednik radi šta već treba sa novim podacima.
[ maddog_srb @ 14.02.2010. 22:54 ] @
To sam zeleo da cujem. Prvobitno sam tako zamsiljao, ali sam kasnije nekako uspeo da se izgubim u socket-ima...

Znaci bataljujem socket i proveravam svake, recimo sekunde, da li je korisnik odabrao neku opciju.
Hvala...
[ Goran Rakić @ 15.02.2010. 09:32 ] @
Ne proveravaš ti da li je korisnik nešto odabrao, već korisnik (tj. njegov preglednik) proverava ima li nešto novo i traži odgovor kada god korisnik nešto odradi. Ako ti igra postane veoma popularna, moraćeš da pametno smisliš kako da smanjiš opterećenje (da praviš manje zahteva, a da i dalje imaš igru bez čekanja).
[ maddog_srb @ 16.02.2010. 18:04 ] @
Mislio sam da kada korisnik izabere neku opciju, posalje serveru informaciju sta je odabrao, i da li je NEKO DRUGI u medjuvremenu promenio status... Nisam se dobro izrazio...

Citat:
...moraćeš da pametno smisliš kako da smanjiš opterećenje (da praviš manje zahteva, a da i dalje imaš igru bez čekanja).


Pa bas sam zbog toga mislio da je moguce da skripta bude aktivna na serveru non-stop, a informacije o korisnicima pamtim u samoj skripti, u nekim pomocnim promenljivima... Iskreno, ne volim bas da koristim baze podataka, jer su one ipak jos uvek najsporiji deo igre, zato bih mogao mozda da to pamtim u fajlove, mada ne znam da li ce se tu dobiti na performansama...

Zato sam to nekako povezam sa socket-ima... Nema veze, verzija 1.0 ide kako smo gore raspravili, a kasnije, videcemo...

Hvala Goranu, pomogao si mi dosta, inace bih se ja jos zamlacivao sa socket-ima...


[ Goran Rakić @ 16.02.2010. 23:39 ] @
Za ovo što tebi treba baza će biti dosta brža od tekstualnih datoteka, osim ako nad njima ne implementiraš indekse, brzo pretraživanje i spajanje,... sve ono što dobijaš koristeći bazu podataka. Stanje partije čuvaš u nekom stalnom sloju koji preživljava između poziva PHP skripte koji se dešavaju kada se god dogodi promena u igri. Za početak baza će ti savršeno poslužiti kao takav sloj.

Alternativa ovom pristup gde igrač stalno zapitkuje PHP skriptu šta ima novo, ona protrči kroz podatke i baci odgovor nazad, bi bila da svaki igrač tokom partije drži otvorenu stalnu HTTP vezu prema PHP skripti (svaki ima svoju instancu PHP skripte) koje onda kroz zajednički sloj razmenjuju podatke o igri. Međutim ovo je teže za implementaciju i limitira mogući broj učesnika, pa je prvi pristup bolji.