Rumah > Soal Jawab > teks badan
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粉4764755512023-11-24 11:30:39
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); ...