2014-05-14 61 views
0

考虑到我有一个朋友,他有一个会议和他自己的房间,当我要发送一条消息时,我想让他把房间切换到其他房间,我也是。如何将用户从房间切换到其他房间?

这个函数当我创建自己的房间与静态会话。

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

你将不得不发出订阅和从客户退订事件,

当用户进入房间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