我以前从未使用过 websockets、webworkers 以及与之相关的所有东西。显然,我迷路了,我不知道如何正确地做到这一点。
我已经学会了如何制作 websocket 并让它在服务器端口中成功工作。另外,加载一个网络工作者(但这不能直接刷新网站)。
当用户连接时,一切正常。 Websocket 正在向用户发送消息,并且用户正在刷新其网站。
问题是当我想与许多其他用户一起使用它时(不同的选项卡或浏览器来模拟不同的用户)。仅适用于下一个通过 websocket 连接的用户,不再适用于其他用户。
我分享一个图表只是为了让大家更容易理解我想要做什么。
还有一点是。对于服务器和用户来说,我必须使用哪种语言来获取此信息? Python、NodeJs、Php(这些是我唯一知道如何使用的)。
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); ...