首頁  >  問答  >  主體

一個 websocket 適用於多個客戶端:最大限度地提高效率和連接性

我以前從未使用過 websockets、webworkers 以及與之相關的所有東西。顯然,我迷路了,我不知道如何正確地做到這一點。

我已經學會如何製作 websocket 並讓它在伺服器連接埠中成功工作。另外,載入一個網路工作者(但這不能直接刷新網站)。

當使用者連線時,一切正常。 Websocket 正在向用戶發送訊息,用戶正在刷新其網站。

問題是當我想與許多其他用戶一起使用它時(不同的選項卡或瀏覽器來模擬不同的用戶)。僅適用於下一個透過 websocket 連線的用戶,不再適用於其他用戶。

我分享一個圖表只是為了讓大家更容易理解我想要做什麼。

還有一點是。對於伺服器和用戶來說,我必須使用哪種語言來獲取此資訊? Python、NodeJs、Php(這些是我唯一知道如何使用的)。

P粉590929392P粉590929392346 天前1211

全部回覆(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
  • 取消回覆