javascript-在Socket.i中创建房间

我想请你帮忙。 我在socket.io的客户端上遇到了麻烦,我想在客户端调用以下代码以在socket.io中创建一个房间:

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

我不知道这是否正确,如果不正确,请帮助我纠正这些家伙。 我不是在节点js和套接字方面专业的人,但是我已经阅读了他们的wiki。 有没有可能创造空间的方法?

Joenel de Asis asked 2020-08-12T05:39:20Z
1个解决方案
94 votes

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

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

在上面的示例中,创建了一个房间,该房间使用在变量3007702891839889882中指定的名称。您无需将此房间对象存储在任何地方,因为它已经是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);
  });
});
hexacyanide answered 2020-08-12T05:39:36Z
translate from https://stackoverflow.com:/questions/19150220/creating-rooms-in-socket-io