为多个客户端使用单个WebSocket

qoefvg9y  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(243)

我以前从来没有使用过websockets,也没有使用过web worker和周围的一切。显然,我迷路了,我不知道如何正确地制作它。
我已经学会了如何创建一个WebSocket,并让它在服务器端口成功工作。同时,加载一个web worker(但这个不能直接刷新网站)。
当一个用户连接上时,一切都运行正常。WebSocket正在向用户发送消息,用户正在刷新他们的网站。
问题是,当我想使用它与许多其他用户(不同的标签或浏览器,以模拟不同的用户)。只与下一个用户的作品是与WebSocket连接,是不工作了与其他用户。
我分享一个图表只是为了让它简单地理解我想做什么。
另一个问题是,我必须使用哪种语言来获得这个,对服务器和用户都是如此?Python,NodeJs,Php(这些是我唯一知道如何使用的)。

h9a6wy2h

h9a6wy2h1#

"解决了"
只是我生成一个数字分配给每个客户端(可以是不同的设备之间的对方),我发送随机数生成的服务器到每个连接!

“* 连接 *”之前,应添加:

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

    ...

相关问题