Socket.IO Présentation PDF
Document Details
Uploaded by ComprehensiveGnome8846
Université Claude Bernard Lyon 1
Thibault Tremblau, Romeo Phang, Youssef Moussaoui
Tags
Summary
This document presents a comprehensive overview of Socket.IO, focusing on its technical aspects, implementation, and applications. Topics covered include real-time communication, different methods, and advanced functionalities. The document was produced by Thibault Tremblau, Roméo Phang, and Youssef Moussaoui for a Lyon 1 course.
Full Transcript
Socket.IO Réalisé par : Thibault TREMBLEAU / Roméo PHANG / Youssef MOUSSAOUI Qu’est ce que la communication en temps réel ? Définition, exemple d’application, et différentes méthode utilisée 2 Définition de la communication en te...
Socket.IO Réalisé par : Thibault TREMBLEAU / Roméo PHANG / Youssef MOUSSAOUI Qu’est ce que la communication en temps réel ? Définition, exemple d’application, et différentes méthode utilisée 2 Définition de la communication en temps réel - Communication instantanément, sans délai perceptible - Interaction en direct - Echange d'information immédiatement 3 Exemple d’applications de communication en temps réel 4 Ce que l’on fait en TP: HTTP Short-Polling - Le client envoie des demandes au serveur à intervalles réguliers - Demande fréquentes et répétitives - Entraîne un trafic réseau et charge de travail pour le serveur 5 Un exemple: HTTP Long-Polling - Etablissement de la connexion - Maintenance de la requête du client ouverte - Réduction du trafic réseau et de la charge du serveur. - Problèmes de connexions persistante, et problèmes de gestion de mémoire 6 Autres méthodes - WebRTC - SSE (Server-sent events) - … 7 WebSockets : C’est quoi - Canal full-duplex - Connexion Persistante - Mises à jour en temps réel 8 WebSockets : Comment l’utiliser ? 9 WebSockets : Avantages - Canal full-duplex - Faible latence - Large compatibilité - Sécurité 10 Problème des WebSockets Beaucoup de choses à implémenter. Pas toujours accessible. 11 Ici intervient Socket.IO 12 Socket.IO : Introduction - Créé en 2011 - Bibliothèque qui utilise principalement WebSockets - Fonctionnalités facilitant la mise en place de la communication 13 Socket.IO : C’est quoi ? - La partie architecture “bas niveau”: Engine.IO - La partie API “haut niveau”: Socket.IO en lui même 14 Socket.IO : Engine.IO - Long-Polling pour la connection - Cherche à “améliorer” vers WebSocket - Reste à HTTP Long Polling sinon (blocage FAI, Firewall, …) 15 Socket.IO : Fonctionnement de l’API Par dessus Engine.IO Fonctionnement par événements entre client et serveur : - Connexion - Emission (Broadcast) - Déconnexion 16 Socket.IO : Librairie - Compatible avec >98% des utilisateurs - Le long-polling permet une plus grande compatibilité WebSockets: 17 Socket.IO : Avec Node.JS - Installation avec NPM - Serveur web + WebSockets 18 Comment fonctionne techniquement Socket.IO ? Installation, Évènements, Adaptateurs, … 19 Les fondamentaux : Installation & mise en route côté Serveur rôle Autonome Installation Gestionnaire de paquets Peut être dépendant d’autres paquets si utilisé comme Middleware ( Ex: Express, Koa.js, …) 20 Les fondamentaux : Installation & mise en route côté Serveur rôle de Middleware Installation Gestionnaire de paquets Peut être dépendant d’autres paquets si utilisé comme Middleware ( Ex: Express, Koa.js, …) 21 Les fondamentaux : Installation & mise en route côté Client Installation Gestionnaire de paquets CDN cdnjs, unpkg, … 22 Les fondamentaux : Socket Communication bidirectionnelle Échange d'événements Identification des clients 23 Les fondamentaux : Events Communication asynchrone en temps réel Identification par nom d’évènements Client / Serveur Client / Serveur 24 Les fondamentaux : Events 25 Les fondamentaux : Rooms Communication Gestion des Performance et ciblée autorisations évolutivité 26 Les fondamentaux : Rooms Serveur 27 Les fonctionnalitées avancées Perte d’information non critique Évolutivité Exemple: Jeu Multijoueur, Tableau de bord, Messagerie instantanée, Suivi des marchés boursiers 28 Les fonctionnalitées avancées : Namespaces Isolation et séparation Communication Inter-serveur Modularité socket.of(namespace) 29 Les fonctionnalitées avancées : Namespaces Serveur Client 30 Les fonctionnalitées avancées : Parser Optimisation des performances Intégration de protocols existants Sécurité & Validation des données 31 Les fonctionnalitées avancées : Volatile Amélioration des ➔ Perte non performances importante Réduction du ➔ Régulation trafic réseau des paquets 32 Les fonctionnalitées avancées : Adaptateurs Stockage des données Partage des informations Scalabilité horizontale 33 Les fonctionnalitées avancées : Adaptateurs Exemple: Usage d’un serveur Redis avec adaptateurs 34 Avantages et Inconvénients de Socket.IO Pros Cons Communication bidirectionnelle en temps Dépendance à Node.JS (Serveur) réel Scalabilité (Clustering complexe) Gestion transparente des déconnexion et Consommations des ressources (vs HTTP) reconnexion Compatibilité avec plusieurs transports (Websocket, long polling) Simplicité d’usage Conclusion: Le choix d’usage de Socket.IO dépend des exigences du projet. 35 Socket.IO Démonstration 36 Socket.IO Démonstration 37 Socket.IO F.A.Q. 38