From 452870d6aff013133760b4df9f9714c8824099a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E5=98=89=E7=A5=BA?= Date: Tue, 11 Aug 2020 20:03:00 +0800 Subject: [PATCH] bugfix: node just publish one leave msg on client which joined multi rooms disconnect --- .../com/corundumstudio/socketio/namespace/Namespace.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/corundumstudio/socketio/namespace/Namespace.java b/src/main/java/com/corundumstudio/socketio/namespace/Namespace.java index 8dde9a4..97057dd 100644 --- a/src/main/java/com/corundumstudio/socketio/namespace/Namespace.java +++ b/src/main/java/com/corundumstudio/socketio/namespace/Namespace.java @@ -188,11 +188,10 @@ public class Namespace implements SocketIONamespace { Set joinedRooms = client.getAllRooms(); allClients.remove(client.getSessionId()); - leave(getName(), client.getSessionId()); - storeFactory.pubSubStore().publish(PubSubType.LEAVE, new JoinLeaveMessage(client.getSessionId(), getName(), getName())); - + // client must leave all rooms and publish the leave msg one by one on disconnect. for (String joinedRoom : joinedRooms) { leave(roomClients, joinedRoom, client.getSessionId()); + storeFactory.pubSubStore().publish(PubSubType.LEAVE, new JoinLeaveMessage(client.getSessionId(), joinedRoom, getName())); } clientRooms.remove(client.getSessionId());