2013-10-03 8 views
28

Я хотел бы попросить вас о помощи. Я с трудом в моей стороне клиента 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 и сокетах, но я уже читал их вики. Есть ли способ создать комнату?

Спасибо, ребята.

+0

Если 'room' не является неотрицательным целым числом (в чем я сомневаюсь), вы, вероятно, не означает' rooms = [] '. –

ответ

68

Номера в 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); 
    }); 
}); 
+0

Спасибо hexacyanide. Эмм. В моем коде выше я храню комнату в комнатах, чтобы номер был указан. Я только что редактировал [Multi Chatroom] Михаила Мухина (http://psitsmike.com/2011/10/node-js-and-socket-io-multiroom-chat-tutorial/), чтобы создаваемые комнаты были добавлены в список. –

+2

@hexacyanide Вы сказали: 'Вам не нужно хранить этот объект комнаты в любом месте', после перезапуска сервера, как вы можете восстановить созданные комнаты? –

+0

@mahdipishguy Комната создается, когда к ней присоединяется сокет, поэтому вам нужно будет хранить комнаты, в которых был сокет, до того, как сервер был остановлен, а затем все сокеты присоединяются к старым комнатам для их воссоздания. Если это то, что вам нужно делать часто, это, скорее всего, то, что вы пытаетесь сделать с комнатами, не то, для чего оно предназначено. – hexacyanide

Смежные вопросы