Socket.io-用户发送消息时不发出消息

时间:2019-07-22 15:17:21

标签: node.js sockets socket.io

预期结果:要求用户输入要加入的会议室名称,输入后,用户将被重定向到该会议室并可以向该会议室内的用户发送消息。

问题:用户可以加入会议室,但是单击发送按钮时,不会发送任何消息,但是当我尝试使用不带会议室功能的相同代码时,它可以正常工作

注意:我正在使用-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>' 
})

Screenshot of Console Output

0 个答案:

没有答案