gpt4 book ai didi

Node.js 加入和离开聊天室

转载 作者:太空宇宙 更新时间:2023-11-04 03:10:26 25 4
gpt4 key购买 nike

我对 Node.js 比较陌生,并且已经查找它有一段时间了。我在处理多个聊天室时遇到问题。

当用户连接时,他们会自动加入我设置的房间。但是,问题是连接是持久的,我希望通过使用 socket.leave(room) 方法来解决该问题。

我的问题是,这在客户端如何处理?

我把这个放在我的脚本中正确吗?

服务器.js

io.sockets.on( 'connection', function( socket ) {

socket.on('join', function(room) {
socket.join(room);
console.log("User joined "+room);
});

socket.on('disconnect', function(room) {
socket.leave(room);
console.log("User left "+room);
});

在客户端,如何触发断开连接事件?我应该在页面卸载时调用它吗?

编辑:附加信息

User 1 connects to room 1
User 2 connects to room 1

这是一个很好的房间连接。

但是,一旦换房间

User 1 connects to room 2
User 3 connects to room 2

用户 1 无法接收来自用户 3 的消息,因为他仍在收听房间 1

这就是我希望管理用户希望加入的房间的原因,因此我的问题是如何强制用户离开特定房间。

如有任何建议,我们将不胜感激。

最佳答案

如果当用户像这样更改房间时,您从客户端代码发出一些事件,例如更改房间:

socket.emit("change room", {newroom: "room name"});

假设客户已经加入房间:

socket.on('join', function(room){
socket.room = room;
socket.join(room);
});

然后你可以在服务器中执行此操作来更改该客户端的房间:

socket.on("change room",function(data){
socket.leave(socket.room);
socket.join(data.newroom);
});

您不必在 disconnect 事件中调用 socket.leave()。你可以按照你自己的逻辑来做。希望您能理解这一点!

关于Node.js 加入和离开聊天室,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22523307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com