This commit is contained in:
imhao183
2021-04-23 09:13:03 +08:00
parent 2d661a1f74
commit d89893821f
30 changed files with 24 additions and 183 deletions
@@ -27,7 +27,6 @@ import io.moquette.persistence.ServerAPIHelper;
import io.moquette.interception.InterceptHandler;
import io.moquette.interception.messages.InterceptAcknowledgedMessage;
import io.moquette.persistence.MemorySessionStore;
import io.moquette.persistence.TargetEntry;
import io.moquette.server.ConnectionDescriptor;
import io.moquette.server.ConnectionDescriptorStore;
import io.moquette.server.Server;
@@ -98,10 +97,9 @@ public class ProtocolProcessor {
});
}
private void handleTargetRemovedFromCurrentNode(TargetEntry target) {
System.out.println("kickof user " + target);
if (target.type == TargetEntry.Type.TARGET_TYPE_USER) {
Collection<MemorySessionStore.Session> sessions = m_sessionsStore.sessionForUser(target.target);
private void kickoffUserOffline(String userId) {
System.out.println("kickoff user " + userId);
Collection<MemorySessionStore.Session> sessions = m_sessionsStore.sessionForUser(userId);
for (MemorySessionStore.Session session : sessions) {
ConnectionDescriptor descriptor = connectionDescriptors.getConnection(session.getClientID());
try {
@@ -113,9 +111,6 @@ public class ProtocolProcessor {
Utility.printExecption(LOG, e);
}
}
} else if(target.type == TargetEntry.Type.TARGET_TYPE_CHATROOM) {
}
}
@@ -704,7 +699,7 @@ public class ProtocolProcessor {
public void onApiMessage(String fromUser, String clientId, byte[] message, int messageId, String from, String request, boolean isAdmin, boolean isRobotOrChannel) {
if(request.equals(ServerAPIHelper.KICKOFF_USER_REQUEST)) {
String userId = new String(message);
mServer.getImBusinessScheduler().execute(()->handleTargetRemovedFromCurrentNode(new TargetEntry(TargetEntry.Type.TARGET_TYPE_USER, userId)));
mServer.getImBusinessScheduler().execute(()-> kickoffUserOffline(userId));
return;
}
qos1PublishHandler.onApiMessage(fromUser, clientId, message, messageId, from, request, isAdmin, isRobotOrChannel);