WebSocket

Tags :
  • COURS
  • informatique
  • développement
  • web
  • websocket
Auteurs :
  • Loïck Goupil-Hallay

Introduction

WebSocket est un protocole de communication qui permet une communication bidirectionnelle et en temps réel entre un client et un serveur web. Il est conçu pour être implémenté dans les navigateurs et les serveurs web, mais il peut être utilisé par n'importe quelle application client/serveur. Cela permet de créer des fonctionnalités web en temps réel, telles que des jeux multijoueurs, des applications de chat en direct et des tableaux de bord en temps réel.

Principe

WebSocket établit une connexion persistante entre le client et le serveur via le protocole TCP. Une fois la connexion établie, les deux parties peuvent envoyer des messages de manière asynchrone. Cela permet une communication en temps réel entre le client et le serveur.
Les ports utilisés par WebSocket sont normalement les ports 80 (HTTP) ou 443 (HTTPS), ce qui facilite leur intégration avec les serveurs web existants.

WebSocket permet le stream de messages s'appuyant sur TCP (qui ne le supporte pas nativement, il ne fait que des streams de bytes sans notion de message).

Compatibilité HTTP

Le standard RFC 6455 de WebSocket garantit une compatibilité avec HTTP. Cela signifie qu'il peut fonctionner sur les mêmes ports que HTTP et qu'il supporte les proxies et intermédiaires (pare-feu, reverse proxy) qui peuvent être configurés pour autoriser le trafic WebSocket.
Cette compatibilité est assurée par le handshake initial qui utilise le HTTP Upgrade header pour passer de HTTP à WebSocket.

Schema de connexion

sequenceDiagram
    participant Client
    participant Serveur
    Client->>Serveur: Handshake
    Serveur->>Client: Handshake (HTTP upgrade)
    Client<<-->>Serveur: Connexion Persistance (WebSocket)
    Serveur<<-->>Client: Messages
    Serveur<<-->>Client: Fin de connexion

Avantages

Limitations