From f96f202b58feac09374d7f17ae96a5e9553b14e7 Mon Sep 17 00:00:00 2001 From: heavyrain2012 Date: Wed, 22 Dec 2021 10:25:31 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=80=E6=AF=81=E8=81=8A=E5=A4=A9=E5=AE=A4?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E6=B8=85=E7=90=86=E8=81=8A=E5=A4=A9=E5=AE=A4?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/moquette/persistence/MemoryMessagesStore.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 82df6375..cd8cb2ba 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -780,6 +780,15 @@ public class MemoryMessagesStore implements IMessagesStore { return builder.build(); } + public void clearChatroomMembers(String chatroomId) { + MultiMap chatroomMembers = m_Server.getHazelcastInstance().getMultiMap(CHATROOM_MEMBER_IDS); + IMap userChatroomMap = m_Server.getHazelcastInstance().getMap(USER_CHATROOM); + chatroomMembers.get(chatroomId).forEach(userClientEntry -> { + userChatroomMap.remove(userClientEntry.userId); + }); + chatroomMembers.remove(chatroomId); + } + @Override public Collection getChatroomMembers(String chatroomId) { MultiMap chatroomMembers = m_Server.getHazelcastInstance().getMultiMap(CHATROOM_MEMBER_IDS); @@ -2573,6 +2582,7 @@ public class MemoryMessagesStore implements IMessagesStore { IMap chatroomInfoMap = hzInstance.getMap(CHATROOMS); WFCMessage.ChatroomInfo room = chatroomInfoMap.get(chatroomId); if (room != null) { + clearChatroomMembers(chatroomId); room = room.toBuilder().setUpdateDt(System.currentTimeMillis()).setState(ProtoConstants.ChatroomState.Chatroom_State_End).build(); chatroomInfoMap.put(chatroomId, room); callbackChatroomInfoUpdateEvent(chatroomId, Chatroom_Event_Destroy);