一个 websocket 适用于多个客户端:最大限度地提高效率和连接性
P粉590929392
P粉590929392 2023-11-23 16:52:38
0
1
1152

我以前从未使用过 websockets、webworkers 以及与之相关的所有东西。显然,我迷路了,我不知道如何正确地做到这一点。

我已经学会了如何制作 websocket 并让它在服务器端口中成功工作。另外,加载一个网络工作者(但这不能直接刷新网站)。

当用户连接时,一切正常。 Websocket 正在向用户发送消息,并且用户正在刷新其网站。

问题是当我想与许多其他用户一起使用它时(不同的选项卡或浏览器来模拟不同的用户)。仅适用于下一个通过 websocket 连接的用户,不再适用于其他用户。

我分享一个图表只是为了让大家更容易理解我想要做什么。

还有一点是。对于服务器和用户来说,我必须使用哪种语言来获取此信息? Python、NodeJs、Php(这些是我唯一知道如何使用的)。

P粉590929392
P粉590929392

全部回复(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);

    ...
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!