【问题标题】:How to add rooms in Node.js with Socket.io?如何使用 Socket.io 在 Node.js 中添加房间?
【发布时间】:2014-02-23 06:18:00
【问题描述】:

我一直在关注许多文章来学习使用 Node.js 和 Socket.io 制作聊天应用程序。一切都很清楚,我可以让应用程序将消息从客户端移动到服务器并发送到所有等,但只有一件事没有清除,无法弄清楚。

如何将房间添加到io.sockets.manager.room

sockets.manager 添加房间的代码是什么?我找到的最简单彻底的文章是http://udidu.blogspot.com/2012/11/chat-evolution-nodejs-and-socketio.html,但经过长时间的挣扎,我仍然找不到作者在哪里添加新房间到服务器。

【问题讨论】:

    标签: javascript html node.js websocket socket.io


    【解决方案1】:
    io.sockets.manager.room
    

    返回房间列表。你的问题不正确。您不会将房间添加到 io.sockets.manager.room,而是将套接字加入房间,然后将房间添加到 io.sockets.manager.room

    要让套接字加入房间,请使用:

    io.sockets.on('connection', function(socket){
        var room = 'Your room name';
        socket.room = room;
        socket.join(room);
        socket.on('disconnect', function(){
            socket.leave(socket.room);
        });
    });
    

    【讨论】:

    • 谢谢奥玛丽!假设如果我为第一个用户使用 socket.join('Lobby') 房间,然后第二个用户也加入了 socket.join('Lobby')。大厅里会有 2 个用户吗?
    • 而 Omary 如果 socket.join('Lobby') 正在将房间添加到其列表中,那么为什么我必须使用 socket.room = 'Lobby'?
    • 完全正确 :) 如果客户端由于互联网问题或其他原因断开连接,如果您在断开连接事件中使用 socket.leave('Lobby'),服务器会将其从该房间移除
    • 谢谢 Omary 你能告诉我为什么使用 socket.room = room 吗?因为如果 socket.join(room) 做了什么,那么 socket.room 的目的是什么?
    • socket.room 仅设置名称为 room 的套接字的属性,您可以使用此属性从房间中动态删除套接字。我已经编辑了我的答案。参见 socket.leave(socket.room)。现在你会明白我为什么要做 socket.room = yourRoom;
    猜你喜欢
    • 2015-05-29
    • 2017-10-20
    • 2014-07-29
    • 2018-05-24
    • 2012-12-08
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    相关资源
    最近更新 更多