web-dev-qa-db-fra.com

Création de pièces dans Socket.io

Je voudrais demander votre aide. J'ai du mal dans mon côté client de socket.io, je voudrais appeler ce code dans mon côté client pour créer une salle dans socket.io:

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

Je ne sais pas si c'est correct, sinon aidez-moi s'il vous plaît à corriger ce gars. Je ne suis pas que pro dans les nœuds js et les sockets mais j'ai déjà lu leurs wikis. Existe-t-il un moyen possible de créer de l'espace?

39
Joenel de Asis

Les salles dans Socket.IO n'ont pas besoin d'être créées, une est créée lorsqu'une socket la rejoint. Ils sont joints côté serveur, vous devez donc demander au serveur d'utiliser le client.

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

Dans l'exemple ci-dessus, une pièce est créée avec un nom spécifié dans la variable room. Vous n'avez pas besoin de stocker cet objet de pièce n'importe où, car il fait déjà partie de l'objet io. Vous pouvez ensuite traiter la salle comme sa propre instance de socket.

io.sockets.in(room).emit('event', data);

Donc, pour créer une pièce à partir du client, voici à quoi cela pourrait ressembler:

// 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);
  });
});
91
hexacyanide