diff --git a/broker/src/main/java/io/moquette/spi/impl/ProtocolProcessor.java b/broker/src/main/java/io/moquette/spi/impl/ProtocolProcessor.java index de3c9a23..6163ed71 100755 --- a/broker/src/main/java/io/moquette/spi/impl/ProtocolProcessor.java +++ b/broker/src/main/java/io/moquette/spi/impl/ProtocolProcessor.java @@ -243,18 +243,16 @@ public class ProtocolProcessor { MemorySessionStore.Session session = m_sessionsStore.getSession(clientId); if(session != null) { session.refreshLastActiveTime(); - forwardOnlineStatusEvent(payload.userName(), clientId, session.getPlatform(), UserOnlineStatus.ONLINE); + forwardOnlineStatusEvent(payload.userName(), clientId, session.getPlatform(), UserOnlineStatus.ONLINE, session.getAppName()); m_messagesStore.updateUserOnlineSetting(session, true); - } else { - forwardOnlineStatusEvent(payload.userName(), clientId, ProtoConstants.Platform.Platform_UNSET, UserOnlineStatus.ONLINE); } LOG.info("The CONNECT message has been processed. CId={}, username={}", clientId, payload.userName()); } - public void forwardOnlineStatusEvent(String userId, String clientId, int platform, int status) { + public void forwardOnlineStatusEvent(String userId, String clientId, int platform, int status, String packageName) { if (!StringUtil.isNullOrEmpty(mUserOnlineStatusCallback)) { - executorCallback.execute(() -> HttpUtils.httpJsonPost(mUserOnlineStatusCallback, new Gson().toJson(new UserOnlineStatus(userId, clientId, platform, status)))); + executorCallback.execute(() -> HttpUtils.httpJsonPost(mUserOnlineStatusCallback, new Gson().toJson(new UserOnlineStatus(userId, clientId, platform, status, packageName)))); } } @@ -562,9 +560,7 @@ public class ProtocolProcessor { MemorySessionStore.Session session = m_sessionsStore.getSession(clientID); if(session != null) { m_messagesStore.updateUserOnlineSetting(session, false); - } - if(session != null) { - forwardOnlineStatusEvent(username, clientID, session.getPlatform(), UserOnlineStatus.LOGOUT); + forwardOnlineStatusEvent(username, clientID, session.getPlatform(), UserOnlineStatus.LOGOUT, session.getAppName()); } channel.closeFuture(); @@ -608,7 +604,7 @@ public class ProtocolProcessor { MemorySessionStore.Session session = m_sessionsStore.getSession(clientID); if(session != null) { session.refreshLastActiveTime(); - forwardOnlineStatusEvent(username, clientID, session.getPlatform(), clearSession ? UserOnlineStatus.LOGOUT : UserOnlineStatus.OFFLINE); + forwardOnlineStatusEvent(username, clientID, session.getPlatform(), clearSession ? UserOnlineStatus.LOGOUT : UserOnlineStatus.OFFLINE, session.getAppName()); m_messagesStore.updateUserOnlineSetting(session, false); } diff --git a/common/src/main/java/cn/wildfirechat/pojos/UserOnlineStatus.java b/common/src/main/java/cn/wildfirechat/pojos/UserOnlineStatus.java index 8ae14bd4..7c760ec8 100644 --- a/common/src/main/java/cn/wildfirechat/pojos/UserOnlineStatus.java +++ b/common/src/main/java/cn/wildfirechat/pojos/UserOnlineStatus.java @@ -10,12 +10,14 @@ public class UserOnlineStatus { public int platform; public int status; public long timestamp; + public String packageName; - public UserOnlineStatus(String userId, String clientId, int platform, int status) { + public UserOnlineStatus(String userId, String clientId, int platform, int status, String packageName) { this.userId = userId; this.clientId = clientId; this.platform = platform; this.status = status; + this.packageName = packageName; this.timestamp = System.currentTimeMillis(); } }