wip: 优化临时提交
This commit is contained in:
@@ -22,12 +22,13 @@ public class OnlineUserJobHandler {
|
||||
private final UserOnlineService userOnlineService;
|
||||
private final SimpMessagingTemplate messagingTemplate;
|
||||
|
||||
// 每分钟统计一次在线用户数
|
||||
@Scheduled(cron = "0 * * * * ?")
|
||||
// 每3分钟统计一次在线用户数,减少服务器压力
|
||||
@Scheduled(cron = "0 */3 * * * ?")
|
||||
public void execute() {
|
||||
log.info("定时任务:统计在线用户数");
|
||||
// 推送在线用户人数
|
||||
messagingTemplate.convertAndSend("/topic/onlineUserCount", userOnlineService.getOnlineUserCount());
|
||||
// 推送在线用户数量到新主题
|
||||
int count = userOnlineService.getOnlineUserCount();
|
||||
messagingTemplate.convertAndSend("/topic/online-count", count);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -107,21 +107,30 @@ public class UserOnlineService {
|
||||
*/
|
||||
private void notifyOnlineUsersChange() {
|
||||
if (messagingTemplate == null) {
|
||||
log.warn("消息模板尚未初始化,无法发送在线用户变更通知");
|
||||
log.warn("消息模板尚未初始化,无法发送在线用户数量");
|
||||
return;
|
||||
}
|
||||
|
||||
// 发送简化版数据(仅数量)
|
||||
sendOnlineUserCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送在线用户数量(简化版,不包含用户详情)
|
||||
*/
|
||||
private void sendOnlineUserCount() {
|
||||
if (messagingTemplate == null) {
|
||||
log.warn("消息模板尚未初始化,无法发送在线用户数量");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
OnlineUsersChangeEvent event = new OnlineUsersChangeEvent();
|
||||
event.setType("ONLINE_USERS_CHANGE");
|
||||
event.setCount(onlineUsers.size());
|
||||
event.setUsers(getOnlineUsers());
|
||||
event.setTimestamp(System.currentTimeMillis());
|
||||
|
||||
String message = objectMapper.writeValueAsString(event);
|
||||
messagingTemplate.convertAndSend("/topic/online-users", message);
|
||||
} catch (JsonProcessingException e) {
|
||||
log.error("Failed to send online users change event", e);
|
||||
// 直接发送数量,更轻量
|
||||
int count = onlineUsers.size();
|
||||
messagingTemplate.convertAndSend("/topic/online-count", count);
|
||||
log.debug("已发送在线用户数量: {}", count);
|
||||
} catch (Exception e) {
|
||||
log.error("发送在线用户数量失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -114,8 +114,27 @@ public class WebSocketServiceImpl implements WebSocketService {
|
||||
* 供外部手动触发通知使用
|
||||
*/
|
||||
public void notifyOnlineUsersChange() {
|
||||
log.info("手动触发在线用户变更通知,当前在线用户数:{}", onlineUsers.size());
|
||||
notifyOnlineUsersChangeInternal();
|
||||
log.info("手动触发在线用户数量通知,当前在线用户数:{}", onlineUsers.size());
|
||||
sendOnlineUserCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送在线用户数量(简化版,不包含用户详情)
|
||||
*/
|
||||
private void sendOnlineUserCount() {
|
||||
if (messagingTemplate == null) {
|
||||
log.warn("消息模板尚未初始化,无法发送在线用户数量");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
// 直接发送数量,更轻量
|
||||
int count = onlineUsers.size();
|
||||
messagingTemplate.convertAndSend("/topic/online-count", count);
|
||||
log.debug("已发送在线用户数量: {}", count);
|
||||
} catch (Exception e) {
|
||||
log.error("发送在线用户数量失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -124,23 +143,12 @@ public class WebSocketServiceImpl implements WebSocketService {
|
||||
*/
|
||||
private void notifyOnlineUsersChangeInternal() {
|
||||
if (messagingTemplate == null) {
|
||||
log.warn("消息模板尚未初始化,无法发送在线用户变更通知");
|
||||
log.warn("消息模板尚未初始化,无法发送在线用户数量通知");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
OnlineUsersChangeEvent event = new OnlineUsersChangeEvent();
|
||||
event.setType("ONLINE_USERS_CHANGE");
|
||||
event.setCount(onlineUsers.size());
|
||||
event.setUsers(getOnlineUsers());
|
||||
event.setTimestamp(System.currentTimeMillis());
|
||||
|
||||
String message = objectMapper.writeValueAsString(event);
|
||||
messagingTemplate.convertAndSend("/topic/online-users", message);
|
||||
log.debug("已发送在线用户变更通知");
|
||||
} catch (JsonProcessingException e) {
|
||||
log.error("发送在线用户变更事件失败", e);
|
||||
}
|
||||
// 只发送简化版数据(仅数量)
|
||||
sendOnlineUserCount();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user