| | |
| | | package org.dromara.common.websocket.utils; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import org.dromara.common.core.domain.model.LoginUser; |
| | | import org.dromara.common.redis.utils.RedisUtils; |
| | | import org.dromara.common.websocket.dto.WebSocketMessageDto; |
| | | import org.dromara.common.websocket.holder.WebSocketSessionHolder; |
| | | import lombok.AccessLevel; |
| | | import lombok.NoArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.redis.utils.RedisUtils; |
| | | import org.dromara.common.websocket.dto.WebSocketMessageDto; |
| | | import org.dromara.common.websocket.holder.WebSocketSessionHolder; |
| | | import org.springframework.web.socket.PongMessage; |
| | | import org.springframework.web.socket.TextMessage; |
| | | import org.springframework.web.socket.WebSocketMessage; |
| | |
| | | import java.util.List; |
| | | import java.util.function.Consumer; |
| | | |
| | | import static org.dromara.common.websocket.constant.WebSocketConstants.LOGIN_USER_KEY; |
| | | import static org.dromara.common.websocket.constant.WebSocketConstants.WEB_SOCKET_TOPIC; |
| | | |
| | | /** |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 发布订阅的消息(群发) |
| | | * |
| | | * @param message 消息内容 |
| | | */ |
| | | public static void publishAll(String message) { |
| | | WebSocketSessionHolder.getSessionsAll().forEach(key -> { |
| | | WebSocketUtils.sendMessage(key, message); |
| | | }); |
| | | WebSocketMessageDto broadcastMessage = new WebSocketMessageDto(); |
| | | broadcastMessage.setMessage(message); |
| | | RedisUtils.publish(WEB_SOCKET_TOPIC, broadcastMessage, consumer -> { |
| | | log.info("WebSocket发送主题订阅消息topic:{} message:{}", WEB_SOCKET_TOPIC, message); |
| | | }); |
| | | } |
| | | |
| | | public static void sendPongMessage(WebSocketSession session) { |
| | | sendMessage(session, new PongMessage()); |
| | | } |
| | |
| | | log.error("[send] session会话已经关闭"); |
| | | } else { |
| | | try { |
| | | // 获取当前会话中的用户 |
| | | LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); |
| | | session.sendMessage(message); |
| | | log.info("[send] sessionId: {},userId:{},userType:{},message:{}", session.getId(), loginUser.getUserId(), loginUser.getUserType(), message); |
| | | } catch (IOException e) { |
| | | log.error("[send] session({}) 发送消息({}) 异常", session, message, e); |
| | | } |