Un serveur ? Pour quoi faire ?
Dans un précédent billet où j’ai expliqué les principes d’XMPP, on a vu que dans l’architecture XMPP, pour que deux utilisateurs communiquent entre eux, ils doivent chacun dialoguer avec leur serveur XMPP et ce sont ces serveurs XMPP qui vont s’échanger des messages pour les rediriger ensuite vers leur utilisateur.
Les serveurs XMPP en ligne existant
Plusieurs serveurs XMPP sont accessibles et offrent des services plus ou moins différents. Le serveur de Google Talk (gmail.com) par exemple permet de dialoguer avec ses contacts Google Talk en passant par le client XMPP Google Talk, ou tout autre client XMPP. De même pour celui de Jabber.org (jabber.org). Bref, si le serveur XMPP l’autorise, il est possible de se connecter à partir de n’importe quel client sur un serveur XMPP dont on possède un compte, et de parler aux contacts liés à ce compte.
Créer son propre serveur XMPP
Mais il est aussi possible de créer son propre serveur XMPP ! Soit pour le mettre en ligne et y accéder de n’importe où, et même le rendre accessible à d’autre. Soit en local pour faire des tests ou je ne sais quoi. C’est cette deuxième possibilité que nous allons voir aujourd’hui !
Fort heureusement, il existe déjà plusieurs implémentations de serveurs XMPP et nous n’avons donc qu’à choisir parmi la liste proposée sur XMPP.org : Liste de serveurs XMPP.
Parmi eux, Openfire (anciennement Wildfire) semble plutôt pas mal ! Facile d’installation et d’utilisation, il permet de mettre en place un système de messagerie instantanée au 1 à 1 ou en salle de discussions avec possibilité de créer des groupes d’individus. De plus, il permet de gérer la « présence » des utilisateurs (en XMPP, cela signifie : « ce gars est-il accessible ou non ? Non mais oh ! ») et de faire du routage via XML. Bref : les bases.
Installer Openfire
Je n’expliciterai la démarche que sur Windows car je n’ai pas eu l’occasion de tester ailleurs. Mais en cas de souci, vous n’avez qu’à regarder du côté de l’Installation Guide !
- Télécharger Openfire et l’installer ou le dé-zipper
- Ouvrir l’exécutable Openfire : bin/openfire.exe (il est possible d’utiliser openfire-service.exe en ligne de commande pour l’ouvrir en tant que service Windows)
- C’est un peu plus long la première fois vu qu’il y a du paramètrage à faire. Logiquement vous devriez avoir quelque chose comme ceci :
- Cliquer sur « Launch Admin » : une page Web s’ouvrira sur votre navigateur préférée (qui a dit Internet Explorer ?!?)
- La première fois, il faut paramétrer Openfire. Rien de compliqué, il suffit de suivre les étapes. Un petit détail cependant, lors de la configuration de la base de données, pour faire simple il suffit de choisir « embedded database » (on n’a rien à faire comme ça), sinon il faut aller voir du côté de Database Installation guide
- Par la suite, il suffit d’entrer le login+mot de passe de l’administrateur. Le login c’est « admin », le mot de passe est celui que vous avez défini pour l’administrateur lors du point précédent
- Vous pouvez ensuite configurer votre serveur, gérer des utilisateurs, des groupes et des salles de discussions…
Utiliser Openfire
Et voilà, à chaque fois que vous souhaitez utiliser votre serveur XMPP, lancer Openfire et c’est parti ! Par défaut, l’hôte pour s’y connecter est « 127.0.0.1 ». par conséquent, si j’ai créé un utilisateur « Test » avec comme mot de passe « testtest », je peux m’y connecter en utilisant ce login/mot de passe et en précisant comme serveur (parfois appelé « service name » ou « host ») « 127.0.0.1 ». Ci-dessous un exemple sous Spark, un client XMPP que nous verrons plus en détails dans un prochain billet :
Et un autre exemple avec un code Java utilisant la librairie Smack (devinez quoi ! C’est encore quelque chose que l’on verra dans un prochain billet !) :
// Prepare connection ConnectionConfiguration config = new ConnectionConfiguration("127.0.0.1"); XMPPConnection connection = new XMPPConnection(config); // Connect to the server try { connection.connect(); // Log into the server connection.login("test", "testtest"); } catch (XMPPException e) { e.printStackTrace(); }
Quant au Jabber ID (JID) des utilisateurs sur ce serveur… Logiquement lors de la configuration du serveur Openfire, vous lui avez donné un nom. Pour moi c’est « testopenfire ». Donc, selon toute logique, le JID des utilisateurs de ce serveur devrait être « login@nom du serveur openfire » (test@testopenfire dans mon cas) mais ce n’est visiblement pas le cas… Réponse au prochaine épisode 🙂
D’autres ressources
- Sur JavaCodeGeeks
Ping : Un client XMPP : Spark - 30 minutes par jour
Ping : XMPP et Java avec Smack : b.a.-ba - 30 minutes par jour