JsonXat

De Cacauet Wiki
La revisió el 19:12, 26 març 2014 per Enric (discussió | contribucions) (Es crea la pàgina amb «Realitzarem una aplicació de xat a través del mòbil i de la web. Per permetre una màxima eficiencia i bon disseny utilitzarem serveis web. Et caldrà haver llegit el…».)
(dif) ← Versió més antiga | Versió actual (dif) | Versió més nova → (dif)
Salta a la navegació Salta a la cerca

Realitzarem una aplicació de xat a través del mòbil i de la web.

Per permetre una màxima eficiencia i bon disseny utilitzarem serveis web. Et caldrà haver llegit els següents articles:


Introducció

Objectius:

  • Treballar web services.
  • Treballar JSON com a format estàndard de comunicació.
  • Establir una API de referència independent de l'implementació.
  • Treballar aplicacions mòbils.

Recursos:

  • Links articles anteriors.
  • curl: (Call URL) utilitat per línia de comandes Unix per testejar serveis web (i d'altres).
  • Pàgina web de test i exemple amb JavaScript:


Passes recomanades

  1. Costat servidor: serveis web
  2. Costat client: exemple JavaScript
  3. Aplicació mòbil:


Definint la nostra API dels serveis JSON

Necessitem una interfície per parlar amb el servidor. Ens permetrà definir el protocol per enviar i rebre missatges independentment de la implementació que tinguem al servidor. És a dir que podem tenir el servei muntat sobre el filesystem o sobre una base de dades i que el client no noti la diferència, ja que la interfície és comuna.



Directiva de seguretat de browsers i JSONP

En aquesta pràctica ens convé utiltizar JSONP (wikipedia) enlloc del JSON habitual per solventar un "problema" de seguretat. Bé, no és un problema, sinó una directiva amb molt de sentit:

SOP o Same-Origin Policy: simplement, els navegadors o browsers impedeixen crides a serveis en servidors que no son el què apareix a la URL en curs.

És lògic i convenient, perquè si no, ens poden "robar la cartera" quan naveguem.

Pel desenvolupament, però, ens provocarà certes molèsties. Les alternatives son:

  • Treballem sempre amb el mateix servidor+port amb JSON (important el port, diferents ports el navegador els considera diferents sites).
  • Col·locar un proxy en el nostre servidor perquè ens redirigeixi certes crides al 2n servidor (apache2 mod_proxy).
  • Utiltizar un "truc" anomenat JSONP. Ens permetrà cridar serveis en un altre servidor però només ens funciona a través de GET.

Teniu un exemple de tot plegat (particularment de la part JavaScript) a:

http://enricus.tk/jsonxat.html

Cal implementar JSONP al servidor i al client. La part negativa de tot plegat és que si després volem fer els serveis amb JSON haurem de duplicar codi o bé passar-lo de JSONP a JSON (seria convenient per seguretat).


App mòbil Android

Utiltizeu l'article Android per iniciar-vos amb les aplicacions pel SO de Google.

Volem realitzar una app que ens faci la mateixa funció que la web d'exemple anterior. És a dir, que carregui i envii missatges a un servidor seguint el protocol marcat per la nostra API.