Un websocket pour plusieurs clients : optimisez l'efficacité et la connectivité
P粉590929392
P粉590929392 2023-11-23 16:52:38
0
1
1227

Je n'ai jamais utilisé de websockets, de webworkers et tout ce qui s'y rapporte auparavant. Évidemment, je suis perdu et je ne sais pas comment procéder correctement.

J'ai appris à créer un websocket et à le faire fonctionner avec succès sur le port du serveur. Chargez également un Web Worker (mais cela n'actualise pas directement le site).

Lorsque l'utilisateur se connecte, tout fonctionne bien. Le Websocket envoie des messages à l'utilisateur et celui-ci actualise son site Web.

Le problème est que je veux l'utiliser avec de nombreux autres utilisateurs (différents onglets ou navigateurs pour simuler différents utilisateurs). Fonctionne uniquement pour le prochain utilisateur se connectant via websocket, plus pour les autres utilisateurs.

Je partage un schéma juste pour que tout le monde comprenne plus facilement ce que je veux faire.

Encore une chose. Quelle langue dois-je utiliser à la fois pour le serveur et pour l'utilisateur pour obtenir ces informations ? Python, NodeJs, Php (ce sont les seuls que je sais utiliser).

P粉590929392
P粉590929392

répondre à tous(1)
P粉476475551

Résolu !

Générez simplement un numéro attribué à chaque client (qui peut être des appareils différents les uns des autres) et envoyez le numéro aléatoire généré par le serveur à chaque connexion !

Avant « Connect », vous devez ajouter :

const WS = require('ws');
const WS_PORT = 8081
const express = require('express');
const app = express();
const PORT = 3000;

app.listen(PORT, () => console.log(`Server listening , go to http://localhost:${PORT}`));
app.use(express.static('public'));


const wss = new WS.Server({ port: WS_PORT })

const wsSelected = new Set();
// Creating connection using websocket

const interval = setInterval(() => {
    const randomNumber = Math.floor(Math.random() * 100);
    //Sending same number to each client
    wsSelected.forEach(ws => 
        ws.send(randomNumber)
    )
}, 2000);

Après « Connect » vous devez ajouter :

wss.on("connection", ws => {
    console.log("New client!");
    
    //This line you should add
    wsSelected.add(ws);

    ...
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal