Подтвердить что ты не робот

Каким образом можно управлять несколькими чатами с помощью socket.io?

Каким образом можно управлять несколькими чатами с помощью socket.io?

Итак, на сервере будет что-то вроде:

io.sockets.on('connection', function (socket) {
  socket.on('message', function (data) {
    socket.broadcast.emit('receive', data);
  });
});

Теперь это будет нормально работать в одной комнате, поскольку оно передает сообщение всем, кто подключен. Как вы отправляете сообщения людям, которые находятся в определенных чатах?

Добавить .of('/chat/room_name')? Или хранить массив в комнате?

4b9b3361

Ответ 1

Socket.IO v0.7 теперь дает вам один Socket для каждого пространства имен, которое вы определяете:

var room1 = io.connect('/room1');
room1.on('message', function () {
    // chat socket messages
});
room1.on('disconnect', function () {
    // chat disconnect event
});

var room2 = io.connect('/room2');
room2.on('message', function () {
    // chat socket messages
});
room2.on('disconnect', function () {
    // chat disconnect event
});

С разными сокетами вы можете выборочно отправлять в нужное пространство имен.

Socket.IO v0.7 также имеет концепцию "комнаты"

io.sockets.on('connection', function (socket) {
  socket.join('a room');
  socket.broadcast.to('a room').send('im here');
  io.sockets.in('some other room').emit('hi');
});

Источник: http://socket.io/#announcement

Ответ 2

Обновление: и Now.js, и Bridge теперь мертвы, см. now.js dead и мост мертв. Socket.io, похоже, применил функцию обратного вызова с v0.9, что является хорошим шагом вперед.

В то время как это не напрямую связано с Socket.io, Now.js(абстракция более высокого уровня ontop Socket.io) поддерживает группы - http://nowjs.com/doc

У них в своем offocial repo есть пример с несколькими комнатами в чате: https://github.com/Flotype/now/blob/master/examples/multiroomchat_example/multiroomchat_server.js