Ein Websocket für mehrere Clients: Maximieren Sie Effizienz und Konnektivität
P粉590929392
P粉590929392 2023-11-23 16:52:38
0
1
1255

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粉590929392
P粉590929392

Antworte allen(1)
P粉476475551

已解决!

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

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

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

    ...
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage