package com.whyc.webSocket.receiver; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.whyc.dto.FireRobotData; import com.whyc.pojo.db_fire_robot.*; import com.whyc.service.*; import com.whyc.util.JsonUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.handler.TextWebSocketHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Date; public class ThirdPartyWebSocketHandler extends TextWebSocketHandler { private static final Logger log = LoggerFactory.getLogger(ThirdPartyWebSocketHandler.class); private WebSocketSession session; @Autowired private EnvironmentService environmentService; @Autowired private EnvironmentThresholdService environmentThresholdService; @Autowired private RobotAlarmService robotAlarmService; @Autowired private RobotStatusService robotStatusService; @Autowired private IdentifyAlarmService identifyAlarmService; @Override public void afterConnectionEstablished(WebSocketSession session) { this.session = session; log.info("WebSocket connection established."); } @Override public void handleTextMessage(WebSocketSession session, TextMessage message) { log.info("Received message: {}", message.getPayload()); // 可以在这里做业务处理,比如发布事件、存入队列等 String jsonStr = message.getPayload(); Gson gson = JsonUtil.getGson(); FireRobotData fireRobotData = gson.fromJson(jsonStr, FireRobotData.class); Date now = new Date(); switch (fireRobotData.getType()){ case "environment": { FireRobotData data = gson.fromJson(jsonStr, new TypeToken>() { }.getType()); Environment env = data.getData(); env.setRecordTime(now); //存入数据库 environmentService.add(env); }break; case "status": { FireRobotData data = gson.fromJson(jsonStr, new TypeToken>() { }.getType()); RobotStatus status = data.getData(); status.setRecordTime(now); //存入数据库 robotStatusService.add(status); }break; case "alarm": { FireRobotData data = gson.fromJson(jsonStr, new TypeToken>() { }.getType()); RobotAlarm alarm = data.getData(); //存入数据库 robotAlarmService.add(alarm); }break; case "threshold": { FireRobotData data = gson.fromJson(jsonStr, new TypeToken>() { }.getType()); EnvironmentThreshold threshold = data.getData(); threshold.setRecordTime(now); //存入数据库 environmentThresholdService.add(threshold); }break; case "identifyAlarm": { FireRobotData data = gson.fromJson(jsonStr, new TypeToken>() { }.getType()); IdentifyAlarm alarm = data.getData(); //存入数据库 identifyAlarmService.add(alarm); }break; default: break; } } @Override public void handleTransportError(WebSocketSession session, Throwable exception) { log.error("Transport error occurred.", exception); } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) { log.info("WebSocket connection closed: {}", status); this.session = null; } public WebSocketSession getSession() { return session; } }