mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-08 15:05:46 +01:00
make sure sockets leave the current room when entering another
This commit is contained in:
@@ -207,7 +207,6 @@ var socket,
|
|||||||
|
|
||||||
socket.emit('meta.rooms.enter', {
|
socket.emit('meta.rooms.enter', {
|
||||||
enter: room,
|
enter: room,
|
||||||
leave: app.currentRoom,
|
|
||||||
username: app.username,
|
username: app.username,
|
||||||
userslug: app.userslug,
|
userslug: app.userslug,
|
||||||
picture: app.picture
|
picture: app.picture
|
||||||
|
|||||||
@@ -70,15 +70,17 @@ SocketMeta.rooms.enter = function(socket, data, callback) {
|
|||||||
return callback(new Error('[[error:invalid-data]]'));
|
return callback(new Error('[[error:invalid-data]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.leave) {
|
if (socket.currentRoom) {
|
||||||
socket.leave(data.leave);
|
socket.leave(socket.currentRoom);
|
||||||
if (data.leave.indexOf('topic') !== -1) {
|
if (socket.currentRoom.indexOf('topic') !== -1) {
|
||||||
websockets.in(data.leave).emit('event:user_leave', socket.uid);
|
websockets.in(socket.currentRoom).emit('event:user_leave', socket.uid);
|
||||||
}
|
}
|
||||||
|
socket.currentRoom = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.enter) {
|
if (data.enter) {
|
||||||
socket.join(data.enter);
|
socket.join(data.enter);
|
||||||
|
socket.currentRoom = data.enter;
|
||||||
if (data.enter.indexOf('topic') !== -1) {
|
if (data.enter.indexOf('topic') !== -1) {
|
||||||
data.uid = socket.uid;
|
data.uid = socket.uid;
|
||||||
websockets.in(data.enter).emit('event:user_enter', data);
|
websockets.in(data.enter).emit('event:user_enter', data);
|
||||||
|
|||||||
Reference in New Issue
Block a user