#canvas #socket.io #drawing #chat
Вопрос:
первый раз здесь. Я пытался чему — то научиться.ввод-вывод и, следуя некоторым видео, я дошел до того, что могу создать простое приложение для рисования с помощью чатов. Проблема в том, что рисунок отображается в каждой комнате, а не в той, в которой вы сейчас находитесь, но мой чат работает правильно. Я знаю, в чем проблема, но не знаю, как ее решить.
Я не смог правильно вставить код, поэтому вместо этого я помещу его в виде фрагмента кода.
function newConnection(socket) { socket.on('chat message', (room, msg) =gt; { io.to(room).emit('chat message', { msg: msg, name: rooms[room].users[socket.id] }); }); socket.on('new-user', (room, name) =gt; { socket.join(room) rooms[room].users[socket.id] = name; socket.broadcast.to(room).emit('user-connected', name); }); socket.on('disconnect', () =gt; { getUserRooms(socket).forEach(room =gt; { socket.broadcast.to(room).emit('user-disconnected', rooms[room].users[socket.id]) delete rooms[room].users[socket.id] }) }) socket.on('mouse', (data) =gt; { socket.broadcast.emit('mouseMsg', data) }) /* socket.on('mouse', (data,room) =gt; { socket.broadcast.to(room).emit('mouseMsg', data) } */ function getUserRooms(socket) { return Object.entries(rooms).reduce((names, [name, room]) =gt; { if (room.users[socket.id] != null) names.push(name) return names }, []) } }
Виновником, я думаю, является событие socket.on(«мышь»). Если я оставлю это так, рисунок будет отправлен всем во всех комнатах, но если, например, я добавлю к нему переменную room, он нигде не будет отображаться? Может быть, я делаю это неправильно (посмотрите на комментарий). При необходимости я могу показать больше кода. Спасибо вам за вашу помощь!