一個 websocket 適用於多個客戶端:最大限度地提高效率和連接性
P粉590929392
P粉590929392 2023-11-23 16:52:38
0
1
1153

我以前從未使用過 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學習者快速成長!