WebSocket permet une communication bidirectionnelle persistante entre le client et le serveur. Chat, notifications en temps réel, jeux, WebSocket est la base. Ce guide montre comment l'implémenter dans les applications mobiles.
Qu'est-ce que WebSocket
Définition
Protocole de communication full-duplex sur TCP.
Par rapport à HTTP
HTTP : requête/réponse. WebSocket : connexion persistante.
Porte
Utilise 80/443 (ws:// et wss://).
Bidirectionnel
Le serveur peut envoyer au client sans demande.
Quand l'utiliser
Discuter
Messagerie instantanée.
###Notifications
Mises à jour en temps réel.
Collaboration
Modification par plusieurs utilisateurs.
Jeux
État synchronisé.
Tableaux de bord
Mesures en direct.
IdO
Communication avec les appareils.
Comment ça marche
Poignée de main
Passez de HTTP à WebSocket.
Connexion
Connexion persistante établie.
Cadres
Données envoyées sous forme de trames.
###Fermer
Clôture gracieuse.
Implémentation du back-end
Node.js
ws, Socket.io.
###Python
websockets, canaux Django.
Aller
Gorille WebSocket.
Rubis
ActionCable (Rails).
Géré
Pousseur, habilement, Firebase.
Socket.IO
Qu'est-ce que c'est
Bibliothèque qui résume WebSocket.
Solutions de repli
Interrogation si WebSocket n'est pas disponible.
###Chambres
Regroupement de connexions.
Espaces de noms
Séparation logique.
Événements
API basée sur les événements.
Implémentation mobile
###iOS
URLSessionWebSocketTask. Cri des étoiles.
###Android
OkHttpWebSocket.
Réagir natif
réagir-native-websocket, client Socket.io.
Flutter
web_socket_channel, socket_io_client.
Gestion des connexions
###Reconnexion
Reconnectez-vous automatiquement.
###Battement de coeur
Ping/pong pour rester en vie.
État
Suivre l’état de la connexion.
File d'attente hors ligne
Mettre les messages en file d'attente en cas de déconnexion.
Authentification
Jeton dans la poignée de main
Envoyer un jeton d'authentification.
Vérification
Le serveur valide avant d'accepter.
###Actualiser
Gestion de l’expiration des jetons.
Évolutivité
Problème
Les connexions persistantes consomment des ressources.
Séances collantes
Utilisateur toujours sur le même serveur.
Pub/Sub
Redis pour la communication entre serveurs.
Équilibrage de charge
Équilibreur de couche 7 avec prise en charge de WebSocket.
Alternatives
Événements envoyés par le serveur (SSE)
Unidirectionnel. Serveur → client.
Longue interrogation
Simule le temps réel avec HTTP.
Abonnements GraphQL
WebSocket sous GraphQL.
Firebase en temps réel
Solutions gérées.
Cas d'utilisation détaillés
Discuter
- Connexion persistante
- Indicateurs de frappe
- Lire les reçus
- Présence
Mises à jour en direct
- Métriques du tableau de bord
- Résultats sportifs
- Cours des actions
- Mises à jour du flux
Multijoueur
- Synchronisation de l'état du jeu -Positions des joueurs
- Actions diffusées
## meilleures pratiques
Logique de reconnexion
Recul exponentiel.
###Battement de coeur
Gardez la connexion vivante.
Format des messages
JSON ou binaire.
###Compression
Perframe-dégonfler.
###Sécurité
WSS (TLS) requis.
Débogage
Outils de développement du navigateur
L'onglet Réseau affiche les trames.
wscat
Outil CLI pour tester.
Journalisation
Connectez-vous, connectez-vous, déconnectez-vous, messages.
##Performances
Connexions
Limite par utilisateur.
Taille de la charge utile
Réduire les données.
Traitement par lots
Messages de groupe lorsque cela est possible.
###Binaire
Plus efficace que JSON pour le volume.
Erreurs courantes
Ne pas se reconnecter
La connexion est interrompue, l'application plante.
Fuites de mémoire
Les auditeurs ne sont pas supprimés.
Aucune authentification
Connexions sans authentification.
Ignorer les déconnexions
Ne gérez pas le statut hors ligne.
Spécifique aux mobiles
Contexte
La connexion se ferme en arrière-plan.
Batterie
Les connexions persistantes épuisent la batterie.
Modifications du réseau
WiFi → cellulaire nécessite une reconnexion.
Pousser le repli
Utilisez push lorsque WebSocket n'est pas disponible.
Conclusion
WebSocket est essentiel pour les fonctionnalités en temps réel. Mettre en œuvre avec une reconnexion robuste, une authentification adéquate et prendre en compte l'impact sur la batterie mobile. Dans de nombreux cas, les services gérés simplifient.
##FAQ
1) WebSocket est-il meilleur que les sondages ? En temps réel, oui. Moins de frais généraux.
2) Firebase remplace-t-il WebSocket ? Dans de nombreux cas, oui. C’est WebSocket géré.
3) WebSocket fonctionne-t-il en arrière-plan mobile ? Limitée. Utilisez push pour l'arrière-plan.
4) Combien de connexions un serveur peut-il gérer ? Cela dépend. Des milliers à des centaines de milliers avec réglage.
5) WebSocket ou SSE ? WebSocket pour bidirectionnel. SSE pour serveur → client uniquement.
A lire aussi
-Backend pour les applications : architecture, technologies et bonnes pratiques
- GraphQL pour Applications : Guide de mise en œuvre -Microservices dans les applications : architecture distribuée pour mobile -Backend pour les applications - Bonnes pratiques de mise à l'échelle -Backend pour les applications - Bonnes pratiques pour les startups
- Architecture d'application : principes fondamentaux et modèles essentiels