考虑到我有一个朋友,并且他有一个会话和他自己的房间,当我要发送消息时,我想他将房间转换到我也在的其他房间。
这是我用静态会话创建自己的房间时的功能。
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);
});
答案 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);
});