Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
|
websockets_php [2023/06/27 08:00] manuel_jose_moles_canal [Video-joc UF4 M7] |
websockets_php [2023/07/05 18:35] (actual) enric_mieza_sanchez no sortien els títols |
||
|---|---|---|---|
| Línia 2: | Línia 2: | ||
| =====Joc online. Apunts.===== | =====Joc online. Apunts.===== | ||
| + | |||
| ====Video-joc UF4 M7==== | ====Video-joc UF4 M7==== | ||
| Ho anirem fent per activitats (etapes) incrementals, | Ho anirem fent per activitats (etapes) incrementals, | ||
| Línia 17: | Línia 18: | ||
| Proporcionarà la posició dels diferents elements i l’sprite associada | Proporcionarà la posició dels diferents elements i l’sprite associada | ||
| - | En els exemples, el servidor només aguantarà una partida. Serà interessant trobar la forma de fer que suporti múltiples partides | + | En els exemples, el servidor només aguantarà una partida. Serà interessant trobar la forma de fer que suporti múltiples partides. |
| + | |||
| + | ======Act1. Exemple Websockets.====== | ||
| + | =====Exemple: | ||
| + | Partim de l' | ||
| + | [[https:// | ||
| + | |||
| + | En aquesta pàgina web trobem una introducció teòrica a la tecnologia de websockets, enllaç a la lliberia PHP-Websockets ([[https:// | ||
| + | |||
| + | <WRAP tip> | ||
| + | L' | ||
| + | </ | ||
| + | |||
| + | <WRAP todo> | ||
| + | De la pàgina anterior, implementa l' | ||
| + | </ | ||
| + | |||
| + | |||
| + | A continuació, | ||
| + | |||
| + | --> index.html | ||
| + | <file html websockets/ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | var socket; | ||
| + | function init() { | ||
| + | socket = new WebSocket(" | ||
| + | |||
| + | socket.onopen = function (msg) { | ||
| + | alert(" | ||
| + | }; | ||
| + | socket.onmessage = function (msg) { | ||
| + | alert(" | ||
| + | }; | ||
| + | socket.onclose = function (msg) { | ||
| + | alert(" | ||
| + | }; | ||
| + | } | ||
| + | function send(msg_xat) { | ||
| + | if(msg_xat.length > 0) { | ||
| + | socket.send(msg_xat); | ||
| + | } | ||
| + | } | ||
| + | function quit() { socket.close() } | ||
| + | function reconnect () { quit(); init(); } | ||
| + | </ | ||
| + | <input type=" | ||
| + | <input type=" | ||
| + | < | ||
| + | <input type=" | ||
| + | <input type=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | <-- | ||
| + | |||
| + | --> SalaXatServer | ||
| + | <file php websockets/ | ||
| + | <?php | ||
| + | require_once(' | ||
| + | |||
| + | class SalaChatServer extends WebSocketServer { | ||
| + | protected function process($user, | ||
| + | echo 'user sent: ' . $message . PHP_EOL; | ||
| + | foreach ($this-> | ||
| + | if ($currentUser !== $user) | ||
| + | $this-> | ||
| + | } | ||
| + | } | ||
| + | protected function connected($user) | ||
| + | { | ||
| + | echo 'user connected' | ||
| + | } | ||
| + | protected function closed($user) | ||
| + | { | ||
| + | echo 'user disconnected' | ||
| + | } | ||
| + | } | ||
| + | |||
| + | $chatServer = new SalaChatServer(" | ||
| + | |||
| + | try { | ||
| + | $chatServer-> | ||
| + | } catch (Exception $e) { | ||
| + | $chatServer-> | ||
| + | } | ||
| + | </ | ||
| + | <-- | ||
| + | |||
| + | <WRAP todo> | ||
| + | A partir dels fitxers d' | ||
| + | Demani el nom. No ha de permetre la connexió si el nom no està introduït. Si la connexió està establerta, que no permeti modificar el nom. | ||
| + | |||
| + | Que enviï el nom al servidor (juntament amb el missatge, en format JSON). | ||
| + | |||
| + | Que mostri en pantalla tant els missatges enviats com els rebuts (en un div addicional), | ||
| + | </ | ||
| + | |||
| + | ======Act-2. Laberint: Iniciant la partida====== | ||
| + | =====Primera fase===== | ||
| + | En aquesta primera fase, farem que el client entri al servidor i es pugui connectar a una partida o crear-ne una de nova. | ||
| + | - Et connectes al servidor. El servidor et respon amb un json de la forma {connexio: | ||
| + | - Li pases el teu nom d’usuari. {nom: | ||
| + | - El servidor t’informa de les partides en curs. {partides: | ||
| + | - Pots optar per crear una nova partida o connectar-te a una existent {accio: | ||
| + | - Si hem fet ‘nova partida’, el servidor ens retorna el llistat de partides, amb la nostra incorporada. | ||
| + | |||
| + | <WRAP todo> | ||
| + | Prenent com a referència el codi treballat en l' | ||
| + | </ | ||