web-dev-qa-db-ja.com

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);
});

これが正しいかどうかはわかりませんが、そうでない場合はこの人を修正するのを手伝ってください。私はノードjsとソケットでプロになることはありませんが、すでに彼らのwikiを読んでいます。部屋を作成する方法はありますか?

39
Joenel de Asis

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