预期结果:要求用户输入要加入的会议室名称,输入后,用户将被重定向到该会议室并可以向该会议室内的用户发送消息。
问题:用户可以加入会议室,但是单击发送按钮时,不会发送任何消息,但是当我尝试使用不带会议室功能的相同代码时,它可以正常工作
注意:我正在使用-socket.to(Room).emit-向用户加入的房间发出信号。
服务器端:
const express = require('express')
const socket = require('socket.io')
const app = express()
const server = app.listen(4000, () => {
console.log('Listening to Port on 4000')
})
app.use(express.static('public'))
const io = socket(server)
io.on('connect', (socket)=> {
console.log(socket.id)
// Room Name Variable
var Room;
socket.on('RoomName', function(Name) {
Room = Name.Room
console.log(Room)
socket.join(Room, () => {
console.log('Room Joined - ' + Room)
})
})
socket.on('newMessageToServer', function(Msg) {
console.log(Msg)
socket.to(Room).emit('messageToClients', Msg)
})
})
客户端(索引页)-
const Socket = io('http://localhost:4000')
// Variables
const InputField = document.querySelector('.RoomName')
const InputBtn = document.querySelector('.Btn')
// Socket Room Setup
InputBtn.addEventListener('click', function() {
Socket.emit('RoomName', {Room: InputField.value})
})
客户端(聊天室页面-提交会议室名称时,页面用户将重定向到)-
const Socket = io('http://localhost:4000')
// Variables
const InputField = document.querySelector('.Input')
const InputBtn = document.querySelector('.Btn')
const MessageUl = document.querySelector('.Messages')
const DataHandle = prompt('Username Handle')
// Event Listeners
InputBtn.addEventListener('click', function() {
Socket.emit('newMessageToServer', {Username: DataHandle, Message: InputField.value})
InputField.value = ''
})
Socket.on('messageToClients', function(Msg) {
MessageUl.innerHTML += '<li><span>' + Msg.Username + '</span>' + Msg.Message + '</li>'
})