Javascript 在Socket.io中创建文件室

Javascript 在Socket.io中创建文件室,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,我想请你帮忙。我在socket.io的客户端遇到了困难,我想在客户端调用以下代码以在socket.io中创建一个文件室: var rooms = []; socket.on('create', function (roomname) { rooms[room] = room; socket.room = roomname; socket.join(roomname); subscribe.subscribe(socket.room); }); 我

我想请你帮忙。我在socket.io的客户端遇到了困难,我想在客户端调用以下代码以在socket.io中创建一个文件室:

var rooms = [];
socket.on('create', function (roomname) {
    rooms[room] = room;
    socket.room = roomname;
            socket.join(roomname);
    subscribe.subscribe(socket.room);
});

我不知道这是否正确,如果不正确,请帮我纠正这个家伙。我在NodeJS和sockets中不是那么专业,但我已经阅读了他们的Wiki。是否有任何可能的方法来创建文件室?

Socket.IO中的文件室不需要创建,一个文件室是在套接字连接它时创建的。它们在服务器端连接,因此您必须指示服务器使用客户端

socket.on('create', function (room) {
  socket.join(room);
});
在上面的示例中,使用变量
room
中指定的名称创建了一个文件室。您不需要将此房间对象存储在任何位置,因为它已经是
io
对象的一部分。然后可以将该房间视为其自己的套接字实例

io.sockets.in(room).emit('event', data);
因此,要从客户端创建一个房间,它可能是这样的:

// client side code
var socket = io.connect();
socket.emit('create', 'room1');

// server side code
io.sockets.on('connection', function(socket) {
  socket.on('create', function(room) {
    socket.join(room);
  });
});

除非
room
是一个非负整数(我对此表示怀疑),否则您可能不是指
room=[]
。谢谢。嗯。在上面的代码中,我将房间存储到房间中,以便将房间列出。我刚刚编辑了Michael Mukhin的,因此创建的房间将添加到列表中。@您说:
您不需要将此房间对象存储在任何位置
,重新启动服务器后,如何恢复创建的房间?@mahdipishguy当套接字加入房间时,将创建一个房间,因此,您需要在服务器停止之前存储套接字所在的房间,然后让所有套接字重新加入旧房间,以便重新创建它们。如果这是你必须经常做的事情,那么很可能你试图用房间做的事情并不是它的设计目的。我不知道你为什么坚持使用
io.sockets.in(room.emit('event',data))io
sockets
实例中的
从何而来?这些是在哪里创建的?我刚刚看到我们有
socket
global变量,你能解释一下吗?