Skip to content

Instantly share code, notes, and snippets.

@atmoner
Forked from luciopaiva/_Full-socketio-client-and-server-example.md
Last active January 5, 2021 18:30
Show Gist options
  • Save atmoner/f5a8cacc71fe737af386fc2bef328818 to your computer and use it in GitHub Desktop.
Save atmoner/f5a8cacc71fe737af386fc2bef328818 to your computer and use it in GitHub Desktop.
Exemple complet de client et de serveur socket.io

Exemple complet de client et de serveur socket.io

Pour voir une explication complète: https://stackoverflow.com/a/24232050/778272.

Comment utiliser

Créez un dossier, exécutez npm init -f, creer deux fichier server.js et client.js. Inutile de préciser que Node.js doit être installé sur votre système.

Installez les bibliothèques requises:

npm install socket.io
npm install socket.io-client

Exécutez le serveur:

node server.js

Ouvrez d'autres fenêtres de terminal et créez autant de clients que vous le souhaitez en exécutant:

node client.js
const
io = require("socket.io-client"),
ioClient = io.connect("http://localhost:8000");
ioClient.on("seq-num", (msg) => console.info(msg));
const
io = require("socket.io")(),
server = io.listen(8000);
let
sequenceNumberByClient = new Map();
// event fired every time a new client connects:
server.on("connection", (socket) => {
console.info(`Client connected [id=${socket.id}]`);
// initialize this client's sequence number
sequenceNumberByClient.set(socket, 1);
// when socket disconnects, remove it from the list:
socket.on("disconnect", () => {
sequenceNumberByClient.delete(socket);
console.info(`Client gone [id=${socket.id}]`);
});
});
// sends each client its current sequence number
setInterval(() => {
for (const [client, sequenceNumber] of sequenceNumberByClient.entries()) {
client.emit("seq-num", sequenceNumber);
sequenceNumberByClient.set(client, sequenceNumber + 1);
}
}, 1000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment