NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Komunikace server > prohlížeč

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
mv
Člen
Avatar
mv:21.6.2015 18:31

Ahoj, dělám prohlížečovku jako je třeba travian a potřeboval bych když hráč A pošle útok na hráče B, tak aby se to hráč B když je online hned dozvěděl, jednoduše rečeno potřebuji aby server poslal klientovi nějakou zprávu. První mě napadl samozřejmě jquery AJAX nebo XMLHttpReguest a každou sekundu se serveru ptát jestli na hráče někdo útočí, ale příšlo mně to hrozně náročné. Pak mě ještě napadly sockety, ale jelikož hostingy mají téměř vždy omezenou dobu konání skriptu, tak je to taky nereálné řešení. Jak byste to řešili vy a jak je to dělané v takovýchto hrách?

 
Odpovědět
21.6.2015 18:31
Avatar
Dominik Gavrecký:21.6.2015 18:33

Myslím si že jednoznačne websockety ktoré sú na to určené ... A webhosting zvoliť tak aby ťa neobmedzoval.

Nahoru Odpovědět
21.6.2015 18:33
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Richard
Člen
Avatar
Richard:21.6.2015 18:59

Server běžně nemůže prohlížeči sám od sebe poslat zprávu, prohlížeč se může zeptat serveru a ten mu pošle odpověď.

Řešení ajaxem je nevhodné, řešení websockety taky není ideální, ale nic lepšího v současné době asi není.

Nahoru Odpovědět
21.6.2015 18:59
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Dominik Gavrecký
Jan Lupčík:21.6.2015 20:08

Na to potřebuje VPS. ;)

Nahoru Odpovědět
21.6.2015 20:08
TruckersMP vývojář
Avatar
Richard
Člen
Avatar
Odpovídá na Jan Lupčík
Richard:21.6.2015 20:08

Nepotřebuje.

Nahoru Odpovědět
21.6.2015 20:08
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Patrik Smělý
Tvůrce
Avatar
Odpovídá na mv
Patrik Smělý:21.6.2015 20:34

Já to mám udělané tak, že php přes curl pošle zprávu na node.js server s technologii socket.io a ten to přepošle klientovi, který je stále připojen.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
21.6.2015 20:34
Avatar
Josef Kuchař - Pepa489:21.6.2015 21:18

Nebo můžeš použít peerjs, ten je na p2p bázi a potřebuje server jen k propojení serveru, server nabízejí zdarma: http://peerjs.com/peerserver, jediná nevýhoda je že funguje pomocí WebRTC a to je podporováno zatím jenom v ff a chrome

Nahoru Odpovědět
21.6.2015 21:18
2x piš, jednou debuguj
Avatar
mv
Člen
Avatar
mv:22.6.2015 12:33

To Patrik Smělý To node.js vypadá dobře, dřív jsem o tom věděl jen, že je to nějaký javascript na serveru. Ale proč tam je to php? Vždyť to lze udělat celé v node.js a to php je tam jen nějaká zbytečná mezivrstva a nebo ne?
To Josef Kuchař - Pepa489 Nedokážu si hru jako je Travian představit na principu p2p, přece se data o hráčích musí ukládat na nějaký server.
Všem děkuji za odpovědi, klienta udělám určitě WebSockety a u serveru se rozhoduji mezi socket.io s node.js, které na to co chci vypadá lépe, ale moc o tom nevím a php se sockety. Řešení zaškrtnu Patrik Smělý , protože mě navedl na node.js, tak snad se vy ostatní nebudete zlobit. :)

 
Nahoru Odpovědět
22.6.2015 12:33
Avatar
Patrik Smělý
Tvůrce
Avatar
Odpovídá na mv
Patrik Smělý:22.6.2015 12:41

Node.js je javascript na serveru, a socket.io je plugin/knihovna pro node.js. To php je tam jako odesilatel nemusí tam být a dá se to napsat jenom v node.js ale vzhledem k tomu že dělám projekt v php a chtěl jsem tam realtime tak to dělám tak že php pošle nějaké data na node.js a node.js(s socket.io) to pošle klientovi v reálném čase (klient je na ten node.js server připojen přes protokol ws://).

 
Nahoru Odpovědět
22.6.2015 12:41
Avatar
mv
Člen
Avatar
Odpovídá na Patrik Smělý
mv:22.6.2015 12:59

Ok, díky za vysvětlení. Neznáte někdo nějaký dobrý český hosting na node.js a nebo hosting kde může trvale běžet php skript jako server? Na node.js jsem našel jen https://rosti.cz/nodejs-hosting/ a na php jsem nenašel nic kde by skript mohl běžet neomezeně. VPS zatím nechci z toho důvodu, že je o dost dražší. :(

 
Nahoru Odpovědět
22.6.2015 12:59
Avatar
Patrik Smělý
Tvůrce
Avatar
Odpovídá na mv
Patrik Smělý:22.6.2015 13:08

Zde je video pro ukázku, jak to využívám já (přes ajax se pošle formulář do php, php to uloží do db a následně pošle websocket, node.js zkontroluje heslo a veme si všechny data a pošle je uživateli, u kterého je script že odposlouchává node.js server s nějakým kanálem např tam jak je vidět ve videu, komentáře a globální zprávy. Jak klientovi přijde zpráva tam jí přes javascript přidá a je hotovo, kouzlo! :D).

Video:
https://www.youtube.com/watch?…

 
Nahoru Odpovědět
22.6.2015 13:08
Avatar
mv
Člen
Avatar
Odpovídá na Patrik Smělý
mv:22.6.2015 13:10

Jaký je rozdíl mezi modulem socket.io a net?

 
Nahoru Odpovědět
22.6.2015 13:10
Avatar
mv
Člen
Avatar
Odpovídá na Patrik Smělý
mv:22.6.2015 13:12

Díky za to videjko, máš to velmi pěkně udělaný. :)

 
Nahoru Odpovědět
22.6.2015 13:12
Avatar
Patrik Smělý
Tvůrce
Avatar
Odpovídá na mv
Patrik Smělý:22.6.2015 13:13

Já ten server teď mám na vlastním stroji u známého co má hosting, ale dříve když jsem to nějak testoval tak jsem používal VPS od hocorii >> https://hicoria.com/intro/order/vps. Je to takový dost divný hosting ale je levný a vše co jsem v tu dobu potřeboval uměl :). Akorát pokud nemáš zkušenosti s linuxem tam pozor, na vps si obvykle nainstaluješ nějaký os nejčastěji asi nějaký linuxoví a pak si tam můžeš hodit co chceš, od node.js až po nějaký herní server.

 
Nahoru Odpovědět
22.6.2015 13:13
Avatar
Patrik Smělý
Tvůrce
Avatar
Odpovídá na mv
Patrik Smělý:22.6.2015 13:18

To opravdu netuším, popravdě jsem pracoval pouze s socket.io :). Ale taky to nevypadá špatně.

 
Nahoru Odpovědět
22.6.2015 13:18
Avatar
mv
Člen
Avatar
Odpovídá na Patrik Smělý
mv:22.6.2015 13:22

Mám radši nizkoúrovňovější věci, ten net vypadá, že je na nižší úrovni než socket.io, takže zkusím ten a nebo to phpko. Dělal si někdy se sockety v php? Jsou tam nějaké problémy?

 
Nahoru Odpovědět
22.6.2015 13:22
Avatar
Patrik Smělý
Tvůrce
Avatar
Odpovídá na mv
Patrik Smělý:22.6.2015 13:30

http://socketo.me/ existuje toto, ale to nabízí variantu js >> php >> js je to náhrada za node.js prostě websocket server pod php ale pokud by jsi chtěl odesílat data přímo z php jako já tak to jde ale dost složitě, na to musíš mít nějaké moduly k php jednoduše jsou s tím komplikace proto mi jako lepší řešení přijde to jak to mám já.

 
Nahoru Odpovědět
22.6.2015 13:30
Avatar
mv
Člen
Avatar
mv:22.6.2015 16:01

Našel jsem velmi zajimavý zdroják v php bez nějaké knihovny :)
https://github.com/…sh-WebSocket
a tady je k němu článek
http://srchea.com/…5-websockets

 
Nahoru Odpovědět
22.6.2015 16:01
Avatar
Odpovídá na mv
Josef Kuchař - Pepa489:22.6.2015 16:08

Jak píše woodbin, pokud to budeš dělat websockety, nebudeš vůbec potřebovat knihovny jak je socket.io, protože na node.js serveru ti to nejspíš nakonec poběží tak jako tak a zprávy typu obrázek posílat nemusíš, takže proč na to nabalovat další balast? ;) :)

Nahoru Odpovědět
22.6.2015 16:08
2x piš, jednou debuguj
Avatar
mv
Člen
Avatar
Odpovídá na Josef Kuchař - Pepa489
mv:22.6.2015 21:49

Zase je ale pravda, že PHP websockety nativně nepodporuje, tak se nejaka knihovnicka hodi :), protoze napsat si to sam neni zrovna jednoduche, chvili zabere ten protokol pochopit i kdyz je to jen lehka nadstavba nad tcp, takze je to dost podobne normal socketum. Urcite by to do nejake dalsi verze php meli pridat.

 
Nahoru Odpovědět
22.6.2015 21:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 20 zpráv z 20.