WebSocket est un protocole de communication qui établit une connexion persistante et bidirectionnelle entre le navigateur et le serveur. Contrairement au HTTP classique (requête/réponse), le WebSocket permet au serveur d'envoyer des données au client à tout moment, sans que celui-ci ait besoin de les demander.
Les cas d'usage typiques sont : le chat en temps réel, les notifications instantanées, les tableaux de bord avec des données live (cours de bourse, monitoring), les éditeurs collaboratifs (type Google Docs) et les jeux en ligne. Partout où la latence doit être minimale et les mises à jour fréquentes, le WebSocket est la solution.
Côté implémentation, Symfony supporte les WebSockets via le composant Mercure (basé sur Server-Sent Events, plus simple) ou des bibliothèques comme Ratchet. Le choix entre WebSocket pur et Mercure dépend de la complexité : Mercure suffit pour la majorité des cas (notifications, mises à jour unidirectionnelles), tandis que le WebSocket brut est nécessaire pour une communication bidirectionnelle intensive.