#html #sockets #server #socket.io #socket.io-1.0
Вопрос:
Я составляю программу голосования, в которой могут голосовать только те участники, которые находятся в определенной комнате. Программа запрашивает у них название комнаты, в которую они должны вступить, и как только они присоединятся, они смогут проголосовать. Учитываются голоса только тех людей, которые находятся в этой конкретной комнате. Например, если я присоединюсь к комнате «встреча» и нажму опцию 1, а другой клиент присоединится к комнате «администратор», в этом случае, даже если он нажмет опцию 1, она не увеличится для клиента в комнате «встреча», она увеличится только в том случае, если какой — либо другой клиент присоединится к комнате «встреча», Может ли кто-нибудь помочь мне, объяснив, как я могу этого добиться ? Я уже пробовал использовать socket.to(КОМНАТА).испускайте, чтобы сделать это, но этого не происходит
var socket = io(); // const roomName=document.getElementById('roomName') // const uname=document.getElementById('identity') // const password=document.getElementById('pass') const showButtons = document.getElementById("btn"); const roomInfo = document.getElementById("roomInfo"); socket.on(" connect", () =gt; { console.log("Connected", socket.id); }); function joinRoom() { const roomName = document.getElementById("roomName").value; socket.emit("roomTojoin", roomName); } socket.on("roomJoined", function (roName) { roomInfo.innerHTML = "You are now in " roName; showButtons.style.display = "block"; }); function vote1() { socket.emit("vote1",roomName); socket.on("vote1done", function (vote1Value) { document.getElementById("vote1Value").innerHTML = vote1Value; }); } function vote2() { socket.emit("vote2",roomName); socket.on("vote2done", function (vote2Value) { document.getElementById("vote2Value").innerHTML = vote2Value; }); } function vote3() { socket.emit("vote3",roomName); socket.on("vote3done", function (vote3Value) { document.getElementById("vote3Value").innerHTML = vote3Value; }); } function vote4() { socket.emit("vote4",roomName); socket.on("vote4done", function (vote4Value) { document.getElementById("vote4Value").innerHTML = vote4Value; }); }
На стороне сервера-
const express = require('express'); const app = express(); var http = require('http').Server(app); var io = require('socket.io')(http); let rooms={} app.use(express.static('client')) let vote=[0,0,0,0] io.on('connection', function (socket) { socket.on('roomTojoin', function (rName) { console.log(rName); socket.join(rName) socket.emit('roomJoined',rName) }) socket.on('vote1', function (roomForVote) { vote[0] = vote[0] 1 socket.emit('vote1done',vote[0]) }) socket.on('vote2', function () { vote[1] = vote[1] 1 socket.emit('vote2done',vote[1]) }) socket.on('vote3', function () { vote[2] = vote[2] 1 socket.emit('vote3done',vote[2]) }) socket.on('vote4', function () { vote[3] = vote[3] 1 socket.emit('vote4done',vote[3]) }) }) http.listen(3000, function(){ console.log('listening on localhost:3000'); });