Utilisation de ws
Récupérez le fichier exo96vide.zip et décompressez-le. Il contient le squelette du projet que l'on va enrichir avec websocket. Vous allez devoir modifier les fichiers app/index.js et app/test.html.
Serveur de base ; ouverture des connexions
- complétez le fichier app/index.js pour :
- charger le module ws
- instancier un serveur WebSocket
- Lors d'une connexion, afficher dans la console du serveur "Client connecté"
- complétez le fichier test.html pour ouvrir la connexion au serveur ws sur localhost au chargement de la page
Écoute des connexions
- Côté serveur :
- quand la connexion est ouverte, envoyer le message "Connexion réussie" au client
- quand le serveur reçoit un message, affiche ce message dans sa console
- Côté client :
- quand le client reçoit un message du serveur, il l'affiche dans sa console
- à l'ouverture de la connexion, le client envoie le message "Hello!" au serveur
Fermeture forcée de la connexion côté client
Au click sur le bouton de déconnexion, le client ferme la connexion avec le serveur. Celui-ci réagit en affichant un message dans sa console indiquant la perte de la connexion avec le client.
Échanges entre clients
Vous allez avoir besoin d'ouvrir la page test.html en plusieurs exemplaires (dans des onglets différents, des navigateurs différents…)
- Côté client, au click sur le bouton "Allô le serveur?", le contenu du champ de type texte est envoyé au serveur
- Côté serveur, cette fois-ci, à la réception du message celui-ci est automatiquement renvoyé à l'ensemble des clients connectés. Pour cela (en supposant que le serveur a été instancié
const wss = new newWSServer.Server({port: 8888});
), vous allez utiliser la collection newWSServer.clients
qui permet d'accéder à l'ensemble des clients connectés
Chercher ensuite comment transférer le message à tous les clients connectés, sauf celui qui l'a envoyé initialement.
Nous n'avons utilisé ici que la console, mais avec un peu d'adaptation en injectant les messages dans le DOM, nous avons un embryon de chat…