【发布时间】:2022-01-15 00:18:27
【问题描述】:
所以我有这个简单的聊天应用程序,并且我正在寻求对其进行调整,以便用户可以使用我创建的 4 个不同的房间。 我将首先尝试解释它是如何工作的,并且我需要得到指导,我需要采取哪些步骤才能使其工作?(考虑到我是初学者)我已经尝试了很多东西但结果总是很糟糕。
客户端:
//Get the room name out of the URL and send it to the server
function getRoomName() {
let roomName = window.location.toString();
if(roomName.includes('#') === true){
roomName = roomName.split("#");
roomName.splice(0, 1);
roomName = roomName.toString();
// Join room
socket.emit('joinRoom', roomName);
}
}
//Here I am changing the URL when clicking on a room button (I got one of these for each button)
proiectFinalRoom.addEventListener('click', () =>{
window.location.href='#proiectFinal';
roomNameEdit.innerHTML = "#PROIECT-FINAL";
})
sendBtn.addEventListener('click', () =>{
sendMessage();
})
//Here I am sending the message to the server
function sendMessage(){
if(messageInput.value === ""){
return;
} else {
//Calling the getRoomName function (when sending a message)
getRoomName();
const text = messageInput.value;
socket.emit('message', text);
displayMessage();
}
}
服务器端:
io.on('connection', (socket) => {
socket.on('joinRoom', function(roomName){
//Join room
socket.join(roomName);
//Send messages
socket.on('message', (message) => {
socket.broadcast.to(roomName).emit('message', `${message}`);
});
});
});
这是我现在所处的阶段,它绝对不能正常工作。我已经阅读了很多关于 socket.io 和房间的文章,但是由于英语不是我的第一语言,我发现我很难理解代码中的问题所在。
【问题讨论】:
-
您提到您的代码有很多错误。你能列出你遇到的一些错误吗?这样会更容易帮助你。
-
老实说,我真的不明白发生了什么。对我来说,每次调用 getRoomName() 时它都会创建一个新用户。 (所以每次你发送消息)连接到几个房间后,消息变得非常混乱。即使您没有与发件人连接到同一个房间,您也会收到消息,您会多次收到相同的消息...
-
或者他们可能多次连接到同一个房间? (我什至不知道这是否可能)
标签: javascript node.js sockets socket.io