recherche

Maison  >  Questions et réponses  >  le corps du texte

Un websocket pour plusieurs clients : optimisez l'efficacité et la connectivité

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粉590929392P粉590929392436 Il y a quelques jours1293

répondre à tous(1)je répondrai

  • P粉476475551

    P粉4764755512023-11-24 11:30:39

    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);
    
        ...

    répondre
    0
  • Annulerrépondre