|
|
@@ -1,99 +0,0 @@
|
|
|
-package cn.reghao.devops.web.ws.handler;
|
|
|
-
|
|
|
-import cn.reghao.devops.web.ws.MessageDispatcher;
|
|
|
-import cn.reghao.devops.web.ws.model.EventType;
|
|
|
-import cn.reghao.jutil.jdk.serializer.JdkSerializer;
|
|
|
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
|
|
|
-import com.google.gson.JsonObject;
|
|
|
-import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.springframework.stereotype.Component;
|
|
|
-import org.springframework.web.socket.*;
|
|
|
-
|
|
|
-import java.io.IOException;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.concurrent.ConcurrentHashMap;
|
|
|
-
|
|
|
-/**
|
|
|
- * @author reghao
|
|
|
- * @date 2022-03-11 16:45:52
|
|
|
- */
|
|
|
-@Slf4j
|
|
|
-@Component
|
|
|
-public class MessageHandler implements WebSocketHandler {
|
|
|
- private MessageDispatcher messageDispatcher;
|
|
|
- private final Map<String, WebSocketSession> sessionMap = new ConcurrentHashMap<>();
|
|
|
-
|
|
|
- public MessageHandler(MessageDispatcher messageDispatcher) {
|
|
|
- this.messageDispatcher = messageDispatcher;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void afterConnectionEstablished(WebSocketSession webSocketSession) throws IOException {
|
|
|
- String sessionId = webSocketSession.getId();
|
|
|
- sessionMap.put(sessionId, webSocketSession);
|
|
|
- log.info("WebSocket 建立连接");
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void handleMessage(WebSocketSession webSocketSession, WebSocketMessage<?> webSocketMessage)
|
|
|
- throws IOException {
|
|
|
- if (webSocketMessage instanceof TextMessage) {
|
|
|
- String payload = (String) webSocketMessage.getPayload();
|
|
|
- JsonObject jsonObject = JsonConverter.jsonToJsonElement(payload).getAsJsonObject();
|
|
|
- String event = jsonObject.get("event").getAsString();
|
|
|
- String payload1 = jsonObject.get("payload").getAsString();
|
|
|
- switch (EventType.valueOf(event)) {
|
|
|
- case heartbeat:
|
|
|
- break;
|
|
|
- case event_error:
|
|
|
- break;
|
|
|
- case event_content:
|
|
|
- break;
|
|
|
- case event_sync:
|
|
|
- break;
|
|
|
- default:
|
|
|
- }
|
|
|
- /*log.info("接收到 WebSocket 文本消息");
|
|
|
- TextMessage textMessage = (TextMessage) webSocketMessage;
|
|
|
- JsonObject jsonObject = JsonConverter.jsonToJsonElement(textMessage.getPayload()).getAsJsonObject();
|
|
|
- sessionMap.forEach((key, session) -> {
|
|
|
- try {
|
|
|
- session.sendMessage(webSocketMessage);
|
|
|
- } catch (IOException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- });*/
|
|
|
- } else if (webSocketMessage instanceof BinaryMessage) {
|
|
|
- log.info("接收到 WebSocket 二进制消息");
|
|
|
- BinaryMessage binaryMessage = (BinaryMessage) webSocketMessage;
|
|
|
- Object object = JdkSerializer.deserialize(binaryMessage.getPayload().array());
|
|
|
- } else if (webSocketMessage instanceof PingMessage) {
|
|
|
- log.info("接收到 WebSocket PingMessage");
|
|
|
- } else if (webSocketMessage instanceof PongMessage) {
|
|
|
- log.info("接收到 WebSocket PongMessage");
|
|
|
- } else {
|
|
|
- log.error("接收到未知类型的 WebSocket 消息");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void handleTransportError(WebSocketSession webSocketSession, Throwable throwable) {
|
|
|
- log.error("WebSocket 数据传输错误");
|
|
|
- removeSession(webSocketSession);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void afterConnectionClosed(WebSocketSession webSocketSession, CloseStatus closeStatus) {
|
|
|
- log.info("WebSocket 断开连接");
|
|
|
- removeSession(webSocketSession);
|
|
|
- }
|
|
|
-
|
|
|
- private void removeSession(WebSocketSession webSocketSession) {
|
|
|
- sessionMap.remove(webSocketSession.getId());
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean supportsPartialMessages() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-}
|