package org.ruoyi.common.chat.listener; import cn.hutool.core.collection.CollUtil; import lombok.extern.slf4j.Slf4j; import org.ruoyi.common.chat.holder.WebSocketSessionHolder; import org.ruoyi.common.chat.utils.WebSocketUtils; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.Ordered; /** * WebSocket 主题订阅监听器 * * @author zendwang */ @Slf4j public class WebSocketTopicListener implements ApplicationRunner, Ordered { @Override public void run(ApplicationArguments args) throws Exception { WebSocketUtils.subscribeMessage((message) -> { log.info("WebSocket主题订阅收到消息session keys={} message={}!", message.getSessionKeys(), message.getMessage()); if (CollUtil.isNotEmpty(message.getSessionKeys())) { message.getSessionKeys().forEach(key -> { if (WebSocketSessionHolder.existSession(key)) { WebSocketUtils.sendMessage(key, message.getMessage()); } }); } }); log.info("初始化WebSocket主题订阅监听器成功"); } @Override public int getOrder() { return -1; } }