[FR] Dobby et serveur websocket Java
Avec Clément, nous nous sommes mis en tête de développer une sorte de plate-forme permettant de formaliser et simplifier les échanges entre un serveur de jeu et un navigateur connecté par l’intermédiaire de websockets. Ce projet, nous l’avons nommé Dobby. Il dispose déjà d’un nom de domaine et d’un blog.
Les contours de ce projet ne sont pas encore fixé, cela va nous demander encore quelques étapes de brainstorming avant d’arriver à quelque chose de mieux défini. Pour l’instant, nous savons que nous voulons une plate-forme stable, permettant d’interconnecter d’un côté des clients, de l’autre, des serveurs applicatifs. Nous souhaiterions aussi simplifier grandement les échanges donc, prendre en charge le statut des connexions : identification, reconnexion, etc.
Après nos premières recherches, nous nous orienterions visiblement sur un service d’authentification en node.js exploitant les JSON Web Tokens. Les utilisateurs passeraient par ce service afin d’obtenir un jeton d’authentification qui leur permettrait d’établir la connexion websocket avec le serveur frontal. Cette étape serait similaire à ce que l’on peut trouver avec un CAS (serveur central d’authentification). Le serveur frontal prendrait donc en charge les connexions websocket et se connecterait à un message broker (RabbitMQ, actuellement en discussion) pour échanger avec les applications.
Cette architecture nous semble intéressante par le fait qu’elle sépare bien les rôles dans des composants différents nous laissant le choix du langage d’implémentation pour chaque élément. Néanmoins, le serveur frontal se trouve être le nœud central de notre architecture et nous pensons qu’il est très important d’expérimenter un peu cette partie avant de nous lancer. En effet, nous ne voulons pas faire les mêmes erreurs qu’avec Ideologia où nous nous sommes retrouvés à changer d’implémentation en cours de route. Ici, nous avons voulu nous tourner vers une implémentation officielle et soutenue, d’où notre choix du langage Java (au moins dans un premier temps).
J’explique sur le blog de Dobby (en anglais) les éléments bloquants de ce choix et comment nous avons réussi à contourner les limitations de l’implémentation pour mettre sur un pied un serveur websocket fonctionnel.
Ce projet démarre à peine, mais n’hésitez pas à rentrez en contact via le projet GitHub associé.