Satu soket web untuk berbilang pelanggan: memaksimumkan kecekapan dan ketersambungan
P粉590929392
P粉590929392 2023-11-23 16:52:38
0
1
1254

Saya tidak pernah menggunakan soket web, pekerja web dan semua yang berkaitan dengannya sebelum ini. Jelas sekali, saya tersesat dan saya tidak tahu cara melakukannya dengan betul.

Saya telah belajar cara membuat websocket dan memastikan ia berfungsi dengan jayanya dalam port pelayan. Selain itu, muatkan pekerja web (tetapi ini tidak memuatkan semula tapak secara langsung).

Apabila pengguna menyambung, semuanya berfungsi dengan baik. Websocket sedang menghantar mesej kepada pengguna, dan pengguna sedang menyegarkan laman web mereka.

Masalahnya ialah apabila saya ingin menggunakannya dengan ramai pengguna lain (tab atau pelayar yang berbeza untuk mensimulasikan pengguna yang berbeza). Hanya berfungsi untuk pengguna seterusnya yang menyambung melalui websocket, bukan lagi untuk pengguna lain.

Saya kongsikan gambar rajah hanya untuk memudahkan semua orang faham apa yang saya nak buat.

Satu lagi. Apakah bahasa yang perlu saya gunakan untuk kedua-dua pelayan dan pengguna untuk mendapatkan maklumat ini? Python, NodeJs, Php (ini adalah satu-satunya yang saya tahu cara menggunakannya).

P粉590929392
P粉590929392

membalas semua(1)
P粉476475551

Selesai!

Hanya jana nombor yang diberikan kepada setiap pelanggan (yang boleh menjadi peranti yang berbeza antara satu sama lain) dan hantar nombor rawak yang dijana oleh pelayan ke setiap sambungan!

Sebelum Sambung” anda harus menambah:

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

Selepas Sambung” anda harus menambah:

wss.on("connection", ws => {
    console.log("New client!");
    
    //This line you should add
    wsSelected.add(ws);

    ...
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan