Les WebSockets sont une technologie de communication qui permet de créer une connexion entre le client et le serveur constante. Ils ont révolutionné les interactions en temps réel sur le web en répondant aux limitations du modèle HTTP. Avant, il fallait utiliser des techniques comme le long polling pour simuler un semblant de communication bidirectionnelle. Les résultats obtenus avec cette technique n'étaient pas performants et peu efficaces.
Ils reposent sur un modèle de communication "full-duplex" où les données circulent dans les deux sens sur une même connexion. Cela permet de beaucoup réduire la latence et le temps perdu sur le réseau. Le protocole commence par une connexion HTTP standard, puis établit un canal dédié pour la communication en temps réel qui permet d'assurer ainsi la compatibilité entre l'infrastructure web et le serveur.
Ils offrent un moyen de transmission efficace pour les données textuelles et binaires. Le protocole inclut des fonctionnalités comme la fragmentation des messages, par exemple, et les trames contrôle, par exemple ping/pong, qui maintiennent la connexion active. Ils supportent également des sous-protocoles applicatifs comme MQTT ou STOMP pour répondre à des besoins métier spécifiques.
J'ai utilisé cette technologie sur de multiples projets professionnels et personnels qui montrent ma capacité à utiliser le temps réel pour répondre à des besoins spécifiques.
Ici, j'ai intégré une solution pour afficher en temps réel les données de monitoring provenant de capteurs divers et des données venant d'une API. Le but principal était de donner aux utilisateurs une vue instantanée des données collectées, sans avoir besoin de rechargement fréquent qui pourrait interrompre la continuité du monitoring.
Dans le cadre de ce projet, les WebSockets ont été un élément clé de mise à jour en temps réel des statuts d'audits. Ce système a pour objectif d'améliorer l'expérience utilisateur en permettant de voir en temps réel les changements sur une vue cartographique apportés par leurs collègues.
Ici, j'ai découvert en détail l'utilisation des WebSockets pour créer un système de tracking en temps réel. L'idée était d'envoyer régulièrement les coordonnées d'un capteur GPS vers une base de données qui, elle-même, renvoyait les changements vers le serveur afin de les afficher dynamiquement sur une carte avec une latence la plus basse possible.
Mes projets m'ont apporté de l'expérience et de la maîtrise en termes de WebSockets. Je sais que cette technologie, aussi puissante qu'elle soit, comporte des difficultés spécifiques. Par exemple, dans le projet Easy-Monithor, la gestion de la latence a été très importante. Si l'interopérabilité avec Mercure a permis d'optimiser la diffusion des événements, il existe encore des marges d'amélioration pour améliorer le temps de réponse en cas de saturation du serveur. Dans le projet de suivi GPS, j'ai dû faire face à quelques problèmes en termes d'optimisation de la fréquence d'envoi et de gestion des données. Pour obtenir le bon compromis entre la précision du tracking et la consommation réseau, il m'a fallu plusieurs phases de tests et d'ajustements pour arriver à un résultat plutôt performant, démontrant ainsi que l'exploitation des WebSockets dans des contextes spécifiques nécessite une adaptation continue.
Ces différents défis sont pour moi une motivation pour continuer à me former et à continuer à progresser, tous les problèmes rencontrés me motivent à apprendre et à consolider les connaissances que j'ai déjà sur les protocoles de communication en temps réel et me donnent envie de découvrir et d'apprendre d'autres solutions pour améliorer mon utilisation de cette technologie dans mes futurs projets. La remise en cause permanente de mes méthodes et la quête d'innovations techniques font partie de ma méthode pour assurer une utilisation optimale des WebSockets dans mes projets.
Le plus important lors de mon apprentissage a été de comprendre que les WebSockets ne sont pas simplement une fonctionnalité technique à ajouter à une application, mais un paradigme qui transforme la manière dont nous devons concevoir les interactions entre les utilisateurs et les serveurs. J'ai appris que, lorsque l'on veut intégrer du temps réel dans nos projets, c'est un aspect à prendre en compte dès la conception du projet, car cela peut influencer les choix d'architecture, d'interface utilisateur et même de modélisation des données. Les WebSockets ne sont pas qu'une simple fonctionnalité, elles sont d'après moi de plus en plus indispensables pour concevoir des sites réactifs et agréables pour l'utilisateur.
Grâce à un apprentissage continu, combinant expérimentation sur des projets personnels et professionnels et un suivi technologique des évolutions du protocole. J'ai assez vite compris les bénéfices qu'une communication en temps réel apporterait à mes applications, que ce soit pour l'utilisateur final ou pour les performances globales du site. Ces premières expériences m'ont permis de comprendre les principes de la technologie et de réaliser des prototypes fonctionnels. Easy-Monitor m'a notamment permis d'avoir une première expérience avec le temps réel, en m'obligeant à penser à la meilleure façon de gérer la transmission des événements pour offrir une expérience utilisateur fluide. C'est donc grâce à cela que j'ai pu tenter différentes solutions pour diminuer la latence et assurer la fiabilité des échanges, ce qui m'a permis de progresser dans la mise en œuvre des compétences techniques et méthodologiques.
Sur Easy-Check, j'ai pu approfondir mes connaissances de mise en œuvre de flux d'événements synchronisés. J'ai aussi pu voir que l'adaptation du système pour gérer les mises à jour en temps réel des statuts des audits m'a permis de mieux comprendre les mécanismes internes des WebSockets et de l'intérêt de la coordination de l'action entre les différentes parties d'un projet en équipe. L'utilisation des WebSockets dans mon projet personnel de tracking GPS m'a aussi fait découvrir l'importance de l'optimisation et de l'adaptation continue des protocoles de communication. Je veux continuer d'explorer ce paradigme pour pouvoir pousser au maximum le sujet sur mes futurs projets.