在线状态回调添加其他端的状态
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
package io.moquette.spi.impl;
|
package io.moquette.spi.impl;
|
||||||
|
|
||||||
import cn.wildfirechat.common.ErrorCode;
|
import cn.wildfirechat.common.ErrorCode;
|
||||||
|
import cn.wildfirechat.pojos.OutputCheckUserOnline;
|
||||||
import cn.wildfirechat.pojos.UserOnlineStatus;
|
import cn.wildfirechat.pojos.UserOnlineStatus;
|
||||||
import cn.wildfirechat.proto.ProtoConstants;
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
@@ -266,7 +267,27 @@ public class ProtocolProcessor {
|
|||||||
if (!StringUtil.isNullOrEmpty(mUserOnlineStatusCallback)) {
|
if (!StringUtil.isNullOrEmpty(mUserOnlineStatusCallback)) {
|
||||||
mServer.getCallbackScheduler().execute(() -> {
|
mServer.getCallbackScheduler().execute(() -> {
|
||||||
try {
|
try {
|
||||||
HttpUtils.httpJsonPost(mUserOnlineStatusCallback, GsonUtil.gson.toJson(new UserOnlineStatus(userId, clientId, platform, status, packageName)), HttpUtils.HttpPostType.POST_TYPE_User_Online_Event_Callback);
|
int sessionstatus;
|
||||||
|
Collection<MemorySessionStore.Session> useSessions = m_sessionsStore.sessionForUser(userId);
|
||||||
|
UserOnlineStatus userOnlineStatus = new UserOnlineStatus(userId, clientId, platform, status, packageName);
|
||||||
|
userOnlineStatus.sessions = new ArrayList<>();
|
||||||
|
|
||||||
|
for (MemorySessionStore.Session session : useSessions) {
|
||||||
|
if (session.getDeleted() > 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ConnectionDescriptor descriptor = connectionDescriptors.getConnection(session.getClientID());
|
||||||
|
if (descriptor == null) {
|
||||||
|
sessionstatus = 1;
|
||||||
|
} else {
|
||||||
|
sessionstatus = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
userOnlineStatus.sessions.add(new OutputCheckUserOnline.Session(userId, session.getClientID(), session.getPlatform(), sessionstatus, session.getLastActiveTime(), session.getAppName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
HttpUtils.httpJsonPost(mUserOnlineStatusCallback, GsonUtil.gson.toJson(userOnlineStatus), HttpUtils.HttpPostType.POST_TYPE_User_Online_Event_Callback);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
|
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ public class Qos1PublishHandler extends QosPublishHandler {
|
|||||||
status = 0;
|
status = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
out.addSession(userId, session.getClientID(), session.getPlatform(), status, session.getLastActiveTime());
|
out.addSession(userId, session.getClientID(), session.getPlatform(), status, session.getLastActiveTime(), session.getAppName());
|
||||||
}
|
}
|
||||||
|
|
||||||
callback.onRouteHandled(GsonUtil.gson.toJson(out).getBytes());
|
callback.onRouteHandled(GsonUtil.gson.toJson(out).getBytes());
|
||||||
|
|||||||
@@ -19,18 +19,23 @@ public class OutputCheckUserOnline {
|
|||||||
public int platform;
|
public int platform;
|
||||||
public int status; //0 online, 1 have session offline
|
public int status; //0 online, 1 have session offline
|
||||||
public long lastSeen;
|
public long lastSeen;
|
||||||
|
public String packageName;
|
||||||
|
|
||||||
public Session(String clientId, String userId, int platform, int status, long lastSeen) {
|
public Session() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public Session(String clientId, String userId, int platform, int status, long lastSeen, String packageName) {
|
||||||
this.clientId = clientId;
|
this.clientId = clientId;
|
||||||
this.userId = userId;
|
this.userId = userId;
|
||||||
this.platform = platform;
|
this.platform = platform;
|
||||||
this.status = status;
|
this.status = status;
|
||||||
this.lastSeen = lastSeen;
|
this.lastSeen = lastSeen;
|
||||||
|
this.packageName = packageName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addSession(String userId, String clientId, int platform, int status, long lastSeen) {
|
public void addSession(String userId, String clientId, int platform, int status, long lastSeen, String packageName) {
|
||||||
Session session = new Session(clientId, userId, platform, status, lastSeen);
|
Session session = new Session(clientId, userId, platform, status, lastSeen, packageName);
|
||||||
sessions.add(session);
|
sessions.add(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package cn.wildfirechat.pojos;
|
package cn.wildfirechat.pojos;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class UserOnlineStatus {
|
public class UserOnlineStatus {
|
||||||
public static final int ONLINE = 0;
|
public static final int ONLINE = 0;
|
||||||
public static final int OFFLINE = 1;
|
public static final int OFFLINE = 1;
|
||||||
@@ -11,6 +13,9 @@ public class UserOnlineStatus {
|
|||||||
public int status;
|
public int status;
|
||||||
public long timestamp;
|
public long timestamp;
|
||||||
public String packageName;
|
public String packageName;
|
||||||
|
public int customState;
|
||||||
|
public String customText;
|
||||||
|
public List<OutputCheckUserOnline.Session> sessions;
|
||||||
|
|
||||||
public UserOnlineStatus() {
|
public UserOnlineStatus() {
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user