Bonjour,
Pour pouvoir avoir un chat ou un système de notifications push, il est important de comprendre que tu dois utiliser un serveur push. Pour se faire plusieurs choix : techno spécifiques (APNS, ...) ou tout simplement les websockets. Pour mon exemple je vais choisir les websockets.
L'application va comporter 2 serveurs (un serveur PHP qui gère l'API, stockage en BDD, .... et le serveur Push qui va propager les notifications du serveur vers les clients).
Pour cet exemple, j'utilise socket.io. Le serveur API sera toujours l'émetteur des notifications Push et les clients web et mobiles les receveurs.
- librairie PHP : https://github.com/Wisembly/elephant.io
- librairie serveur Push (nodejs) : http://socket.io/
- librairie Push client (AngularJS) : https://github.com/automattic/socket.io-client
- librairies socket.io pour Objective-C et Java
Comment cela va se passer ?
- Le client fait un envoi de message à l'api (ex : POST /api/chat/ avec le contenu "Coucou ça va ?") via l'api Rest basique
- Le serveur API gère la requête, enregistre en base, ...
- Le serveur API envoie une requête au serveur Push en disant qu'il y a un nouveau message à propager
- le serveur Push propage le message
- Les clients connectés recoivent le message
Voici le code pour PHP, il est assez simple :
Voici un exemple du serveur Push fonctionnel : https://github.com/Arato/push. Comme tu peux le voir il y a très peu de code. Le serveur se charge juste de broadcaster les informations à tous les clients.
Et côté client ce n'est pas plus compliqué :
https://github.com/Arato/client/blob/master/app/scripts/controllers/alerts.js
Tu fais la même chose pour tous les clients mobiles et le tour est joué !
PS : j'ai mis le nom des channels bien spécifiques pour que tu comprennes comment ça fonctionne. Il est possible de n'avoir qu'un nom de channel pour toute la chaîne.