suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Ein Websocket für mehrere Clients: Maximieren Sie Effizienz und Konnektivität

Ich habe noch nie Websockets, Webworker und alles, was damit zusammenhängt, verwendet. Offensichtlich bin ich verloren und weiß nicht, wie ich das richtig machen soll.

Ich habe gelernt, wie man einen Websocket erstellt und ihn erfolgreich im Server-Port zum Laufen bringt. Laden Sie außerdem einen Web-Worker (wodurch die Site jedoch nicht direkt aktualisiert wird).

Wenn der Benutzer eine Verbindung herstellt, funktioniert alles einwandfrei. Der Websocket sendet Nachrichten an den Benutzer und der Benutzer aktualisiert seine Website.

Das Problem ist, wenn ich es mit vielen anderen Benutzern verwenden möchte (verschiedene Registerkarten oder Browser, um verschiedene Benutzer zu simulieren). Funktioniert nur für den nächsten Benutzer, der sich per Websocket verbindet, nicht mehr für andere Benutzer.

Ich teile ein Diagramm, damit jeder leichter versteht, was ich tun möchte.

Noch etwas. Welche Sprache muss ich sowohl für den Server als auch für den Benutzer verwenden, um diese Informationen zu erhalten? Python, NodeJs, PHP (das sind die einzigen, die ich verwenden kann).

P粉590929392P粉590929392442 Tage vor1308

Antworte allen(1)Ich werde antworten

  • P粉476475551

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

    已解决!

    只需生成一个分配给每个客户端的编号(可以是彼此之间不同的设备),然后将服务器生成的随机数发送到每个连接!

    连接”之前,您应该添加:

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

    连接”之后,您应该添加:

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

    Antwort
    0
  • StornierenAntwort