我对node.js比较陌生,现在已经有很长一段时间了。我在处理多个聊天室时遇到了问题。
当用户连接时,他们会自动加入我设置的房间。但是,问题是连接是持久的,我希望通过使用socket.leave(room)方法来解决这个问题。
我的问题是,如何在客户端处理这个问题?
我是否正确地将其放在我的剧本上?
server.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
这就是我希望管理用户希望加入的房间的原因,因此我提出了如何强迫用户离开特定房间的问题。
非常感谢任何建议。
答案 0 :(得分:4)
如果您在用户更改此房间时从客户端代码中发出类似change room
的事件:
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);
});
您无需在socket.leave()
事件中致电disconnect
。你可以用自己的逻辑来做。希望你能理解这一点!