【发布时间】:2019-04-11 07:30:28
【问题描述】:
我的问题是关于套接字房间以及离开和加入房间。我的问题是:我正在创建聊天室,并且我希望每当用户(套接字)单击“下一个人”按钮(在我的情况下为链接)我希望套接字断开连接(离开)其当前房间并加入另一个套接字正在等待第二个套接字的另一个房间。就像在 Omegle
标题
所以我尝试了这段代码
客户端:
N.addEventListener('click', function(e){
socket.emit('next')
});
socket.on('next',function(){
socket.disconnect()
document.GetElementById('divd').style.display = "inline";
socket.connect()
});
服务器端:
socket.on('next', function(){
socket.leave(socket.current_room)
chnm.in(socket.current_room).emit('next');
socket.join(room)
});
但是每当我单击“下一步”时,它只显示两个套接字断开 div,就像在断开事件中一样,但不会让触发该事件的套接字加入其他房间 我的房间就是这样的
var room = "room" + numb;
socket.current_room = room;
但我想要的是在房间(插座断开连接的地方)显示插座断开连接和触发该事件的插座连接到其他房间。 (例如:在房间 1 中,套接字触发了“下一个”链接,他/她从房间 1 断开连接并加入房间 2,并且在房间 1 中出现断开连接 div,我认为如果我使用 socket.disconnect() 无论如何它都会出现,因为我已经创建了断开事件。感谢大家的帮助
【问题讨论】:
-
您离开一个房间并加入另一个房间的通常方式是向您的服务器发送一条消息,要求它代表您执行
socket.leave(oldRoom)和socket.join(newRoom)。无需为了更换房间而断开连接并重新连接。 -
你能给我举个例子吗,我有点困惑,因为我认为我正在做你所说的
-
请不要破坏您的帖子。如果您认为您的问题没有用或不再有用,则应将其删除,而不是编辑掉实际上使其成为问题的所有数据。通过在 Stack Exchange 网络上发布,您已授予 SE 分发该内容的不可撤销的权利(根据 CC BY-SA 3.0 许可)。根据 SE 政策,任何破坏行为都将被撤销。
标签: node.js sockets express socket.io chatroom