|
|
@@ -42,6 +42,7 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
|
|
|
|
|
|
@Autowired
|
|
|
private IotServerInfoService iotServerInfoService;
|
|
|
+
|
|
|
/**
|
|
|
* 连接成功后
|
|
|
*/
|
|
|
@@ -50,16 +51,16 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
|
|
|
|
|
|
String registerCode = (String) session.getAttributes().get("registerCode");
|
|
|
if (registerCode != null) {
|
|
|
- Map<String,Object> map = new HashMap<>();
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
IotServerInfo serverInfo = iotServerInfoService.getToken(registerCode);
|
|
|
- if(serverInfo == null){
|
|
|
+ if (serverInfo == null) {
|
|
|
map.put("statusDescription", "验证码不存在!");
|
|
|
map.put("statusCode", WebsocketStatus.ERROR.getStatusCode());
|
|
|
- }else{
|
|
|
- map.put("statusDescription",serverInfo.getIotCode());
|
|
|
- map.put("statusCode",WebsocketStatus.SUCCESS.getStatusCode());
|
|
|
+ } else {
|
|
|
+ map.put("statusDescription", serverInfo.getIotCode());
|
|
|
+ map.put("statusCode", WebsocketStatus.SUCCESS.getStatusCode());
|
|
|
}
|
|
|
- WebsocketResult register = createWebsocketResult(null, "register" , map);
|
|
|
+ WebsocketResult register = createWebsocketResult(null, "register", map);
|
|
|
WebSocketUtils.sendMessage(session, JacksonUtils.toJSONString(register));
|
|
|
log.info("[建立注册连接] sessionId: {},registerCode:{}", session.getId(), registerCode);
|
|
|
session.close();
|
|
|
@@ -67,16 +68,16 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
|
|
|
}
|
|
|
|
|
|
String token = (String) session.getAttributes().get("token");
|
|
|
- if(StringUtils.isNotEmpty(token)){
|
|
|
+ if (StringUtils.isNotEmpty(token)) {
|
|
|
IotServerInfo serverInfo = iotServerInfoService.selectByToken(token);
|
|
|
serverInfo.setRegisterCodeStatus(1);
|
|
|
serverInfo.setLastConnectTime(LocalDateTime.now());
|
|
|
serverInfo.setIotStatus(IotServerConnectStatus.CONNECTED.getIdx());
|
|
|
iotServerInfoService.updateByToken(serverInfo);
|
|
|
WebSocketSessionHolder.addSession(token, session);
|
|
|
- Map<String,Object> map = new HashMap<>();
|
|
|
- map.put("statusCode",WebsocketStatus.SUCCESS.getStatusCode());
|
|
|
- WebsocketResult result = createWebsocketResult(null, "login" , map);
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("statusCode", WebsocketStatus.SUCCESS.getStatusCode());
|
|
|
+ WebsocketResult result = createWebsocketResult(null, "login", map);
|
|
|
WebSocketUtils.sendMessage(session, JacksonUtils.toJSONString(result));
|
|
|
log.info("[建立连接] sessionId: {},token:{}", session.getId(), token);
|
|
|
return;
|
|
|
@@ -84,7 +85,7 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
|
|
|
session.close();
|
|
|
}
|
|
|
|
|
|
- private WebsocketResult createWebsocketResult(String id,String topic,Object object){
|
|
|
+ private WebsocketResult createWebsocketResult(String id, String topic, Object object) {
|
|
|
WebsocketResult result = new WebsocketResult();
|
|
|
result.setId(id);
|
|
|
result.setTopic(topic);
|
|
|
@@ -142,55 +143,60 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
|
|
|
// 从WebSocket会话中获取登录用户信息
|
|
|
WebSocketSessionHolder.updateToken(session);
|
|
|
String payload = message.getPayload();
|
|
|
- log.info("接收到消息:{}",message.getPayload());
|
|
|
+ log.info("接收到消息:{}", message.getPayload());
|
|
|
|
|
|
- if (payload.isEmpty()){
|
|
|
+ if (payload.isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
|
try {
|
|
|
WebsocketResult websocketResult = JSON.parseObject(payload, WebsocketResult.class);
|
|
|
Object obj = websocketResult.getPayload();
|
|
|
String topic = websocketResult.getTopic();
|
|
|
- if (ObjectUtil.isNotEmpty(obj)){
|
|
|
+ if (ObjectUtil.isNotEmpty(obj)) {
|
|
|
|
|
|
- TopicTypeEnums typeEnums = TopicTypeEnums.matcherTopicTypeEnums(topic);
|
|
|
- if (typeEnums == null){
|
|
|
- log.error("消息topic错误:{}",topic);
|
|
|
- return;
|
|
|
- }
|
|
|
+ TopicTypeEnums typeEnums = TopicTypeEnums.matcherTopicTypeEnums(topic);
|
|
|
+ if (typeEnums == null) {
|
|
|
+ log.error("消息topic错误:{}", topic);
|
|
|
+ return;
|
|
|
+ }
|
|
|
Map map = JSON.parseObject(obj.toString(), Map.class);
|
|
|
//上报事件
|
|
|
String event = (String) map.get(WebSocketConstants.EVENT);
|
|
|
String service = (String) map.get(WebSocketConstants.SERVICE);
|
|
|
String trigger = (String) map.get(WebSocketConstants.TRIGGER);
|
|
|
String token = WebSocketSessionHolder.getSessionKey(session);
|
|
|
- String routingKey=ObjectUtil.isNotEmpty(event) ? event : service;
|
|
|
+ String routingKey = ObjectUtil.isNotEmpty(event) ? event : service;
|
|
|
//上报消息内容
|
|
|
Object args = map.get(WebSocketConstants.ARGS);
|
|
|
- if (ObjectUtil.isEmpty(event)||args==null){
|
|
|
- log.error("消息内容为空:{}",message.getPayload());
|
|
|
+ if (ObjectUtil.isEmpty(event) || args == null) {
|
|
|
+ log.error("消息内容为空:{}", message.getPayload());
|
|
|
return;
|
|
|
}
|
|
|
- switch (typeEnums) {
|
|
|
- case SYS_NOTICE:
|
|
|
- break;
|
|
|
- case DEVICE_STATUS:
|
|
|
- break;
|
|
|
- case PRODUCT_EVENT_NOTICE:
|
|
|
- break;
|
|
|
- case PRODUCT_SERVICE_REPLY:
|
|
|
- break;
|
|
|
- case PRODUCT_PROPERTY_REPLY:
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- RouterService routeService = RouterServiceHandler.getRouteService(typeEnums.getProductName(),routingKey);
|
|
|
- routeService.execute(new WebsocketExecuteReq(event, args,token));
|
|
|
+ switch (typeEnums) {
|
|
|
+ //系统通知
|
|
|
+ case SYS_NOTICE:
|
|
|
+ break;
|
|
|
+ //设备状态通知
|
|
|
+ case DEVICE_STATUS:
|
|
|
+ break;
|
|
|
+ //产品事件通知消息
|
|
|
+ case PRODUCT_EVENT_NOTICE:
|
|
|
+ //IoT返回服务调用消息
|
|
|
+ case PRODUCT_SERVICE_REPLY:
|
|
|
+ RouterService routeService = RouterServiceHandler.getRouteService(typeEnums.getProductName(), routingKey);
|
|
|
+ routeService.execute(new WebsocketExecuteReq(event, args, token));
|
|
|
+ break;
|
|
|
+ //IoT返回属性
|
|
|
+ case PRODUCT_PROPERTY_REPLY:
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
//todo 返回iot消息
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
- log.error("转换消息内容时出错:{}",e);
|
|
|
+ log.error("转换消息内容时出错:{}", e);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -245,12 +251,12 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
|
|
|
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
|
|
|
String token = (String) session.getAttributes().get("token");
|
|
|
WebSocketSessionHolder.removeSession(token);
|
|
|
- if(StringUtils.isNotEmpty(token)){
|
|
|
+ if (StringUtils.isNotEmpty(token)) {
|
|
|
IotServerInfo serverInfo = iotServerInfoService.selectByToken(token);
|
|
|
serverInfo.setIotStatus(IotServerConnectStatus.OFFLINE.getIdx());
|
|
|
iotServerInfoService.updateByToken(serverInfo);
|
|
|
}
|
|
|
- log.info("[断开连接] sessionId: {},token:{}",session.getId(),token);
|
|
|
+ log.info("[断开连接] sessionId: {},token:{}", session.getId(), token);
|
|
|
}
|
|
|
|
|
|
/**
|