如何将用户从房间切换到其他房间?

时间:2014-05-14 18:39:19

标签: javascript node.js express socket.io

考虑到我有一个朋友,并且他有一个会话和他自己的房间,当我要发送消息时,我想他将房间转换到我也在的其他房间。

这是我用静态会话创建自己的房间时的功能。

socket.on('chat-in', function(data){
    session.id_usuario = session.idUsuario;
    session.save();
    socket.username = session.id_usuario;
    usernames[session.id_usuario] = session.id_usuario; 



    socket.leave(socket.room);

      socket.join(usernames[session.id_usuario]);

  serv.sockets.emit('mensaje',usernames);


  });

这段代码就是我要切换房间

socket.on('createRoom',function(datos){

     var obj = {};
      obj.mensaje = datos.mensaje;
      obj.from = datos.idMe;
      obj.to = datos.idFriend;

    var room = datos.id;
    var mensaje = datos.mensaje;
    var idMe = datos.idMe;
    var idFriend = datos.idFriend;
    var roomTrue = 'luisybeto';


    var oldRoom  = socket.room;
    socket.leave(socket.room);
    socket.join(roomTrue);
    socket.room = newroom;

      serv.sockets.in(roomTrue).emit('tester',obj);

    });

HTML

 $('#sendMessage').click(function(){
              var datos = {};
              datos.idFriend = idAmigoPost;
              datos.idMe = $('.id').attr('id');
              console.log(datos.idMe);
              datos.mensaje = $('#mensajeInboxSend').val();
              io.emit('createRoom',datos);

             });

1 个答案:

答案 0 :(得分:1)

您必须从客户端发出订阅和取消订阅事件,

当用户来到1号房间时

客户端:

socket.emit('subscribe', 'room1'); 

当用户切换到2室

客户端:

socket.emit('unsubscribe', 'room1');   
socket.emit('subscribe', 'room2');

服务器:

socket.on('subscribe', function(room) { 
    socket.join(room); 
});
socket.on('unsubscribe', function(room) {  
    socket.leave(room); 
});

参考:https://github.com/LearnBoost/socket.io/wiki/Rooms