Aller au contenu principal

🔌 WebSockets

Nous avons utilisĂ© jusqu'Ă  maintenant le polling pour mettre Ă  jour les messages dans l'application. Le polling a l'avantage d'ĂȘtre simple Ă  mettre en Ɠuvre, mais est peu performant. En effet, on effectue constamment des requĂȘtes d'API, mĂȘme s'il n'y a pas de nouveaux messages.

Le polling a aussi le désavantage que si on ne veut pas recharger la liste complÚte de messages, on doit garder en référence la date du dernier message reçu afin de récupérer les messages ayant été reçus par le serveur aprÚs cette date. De plus, le polling n'est pas instantané non plus.

Une approche alternative est d'utiliser les WebSockets.

Les WebSockets sont une technologie permettant d’établir une communication bidirectionnelle persistante entre un client (comme un navigateur) et un serveur. Contrairement aux requĂȘtes HTTP classiques, oĂč chaque interaction suit un modĂšle “requĂȘte-rĂ©ponse” limitĂ©, les WebSockets permettent un flux constant de donnĂ©es dans les deux sens.

Lorsqu’une connexion WebSocket est ouverte, elle reste active jusqu’à ce qu’une des parties dĂ©cide de la fermer. Cette approche rĂ©duit la surcharge associĂ©e Ă  l’établissement d’une nouvelle connexion pour chaque interaction. Les messages Ă©changĂ©s sont plus lĂ©gers que les requĂȘtes HTTP classiques, ce qui rend les WebSockets particuliĂšrement efficaces dans des contextes nĂ©cessitant des mises Ă  jour frĂ©quentes et rapides.

Le protocole est largement supporté par les navigateurs modernes et les serveurs.

Dans cette section​

attention

Cette section n'est pas guidée étape par étape. Elle assume un projet de base (que vous pouvez télécharger) et présente les grandes lignes permettant de mettre en place une communication par WebSockets pour votre projet.

Vous trouverez le code d'une petite application trĂšs simple de "dessin" collaboratif. Plusieurs personnes peuvent activer ou dĂ©sactiver des pixels sur une mĂȘme grille. Le tout fonctionnant via WebSockets.

img

Code complet​

https://gitlab.com/bentremblay.cd/websockets-demo Vous pouvez télécharger le code de cette démo ici: