首页  >  问答  >  正文

一个 websocket 适用于多个客户端:最大限度地提高效率和连接性

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

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

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

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

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

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

P粉590929392P粉590929392298 天前1161

全部回复(1)我来回复

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

    回复
    0
  • 取消回复