2014-05-14 122 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