shjung 2 ani în urmă
părinte
comite
8a54040a1f

+ 7 - 1
src/main/java/com/its/op/controller/ResourceMonitoringController.java

@@ -1,6 +1,7 @@
 package com.its.op.controller;
 
 import com.its.op.dto.ThreadMonitoringDto;
+import com.its.op.dto.WebsocketMonitoringDto;
 import com.its.op.service.ResourceMonitoringService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -52,7 +53,6 @@ public class ResourceMonitoringController {
         return ResponseEntity.ok(result);
     }
 
-
     @ApiOperation(value = "스레드 리소스 현재값 조회", response = ThreadMonitoringDto.class, responseContainer = "ArrayList")
     @GetMapping(path="/threads", produces = MediaType.APPLICATION_JSON_VALUE)
     public ResponseEntity<List<ThreadMonitoringDto>> threadMonitoringCurrent() {
@@ -60,4 +60,10 @@ public class ResourceMonitoringController {
         return ResponseEntity.ok(result);
     }
 
+    @ApiOperation(value = "웹소켓 조회", response = WebsocketMonitoringDto.class, responseContainer = "ArrayList")
+    @GetMapping(path="/websocket/list", produces = MediaType.APPLICATION_JSON_VALUE)
+    public ResponseEntity<List<WebsocketMonitoringDto>> getWebsocketList() {
+        List<WebsocketMonitoringDto> result = this.resourceMonitoringService.getWebsocketList();
+        return ResponseEntity.ok(result);
+    }
 }

+ 39 - 0
src/main/java/com/its/op/dto/WebsocketMonitoringDto.java

@@ -0,0 +1,39 @@
+package com.its.op.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("WebsocketMonitoringDto(Websocket Monitoring Dto)")
+public class WebsocketMonitoringDto {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("connectTm")
+    @JsonProperty("connectTm")
+    private String connectTm;
+
+    @ApiModelProperty("groupId")
+    @JsonProperty("groupId")
+    private String groupId;
+
+    @ApiModelProperty("remoteAddress")
+    @JsonProperty("remoteAddress")
+    private String remoteAddress;
+
+    @ApiModelProperty("uri")
+    @JsonProperty("uri")
+    private String uri;
+
+    @ApiModelProperty("sessionId")
+    @JsonProperty("sessionId")
+    private String sessionId;
+
+}

+ 21 - 0
src/main/java/com/its/op/service/ResourceMonitoringService.java

@@ -1,11 +1,16 @@
 package com.its.op.service;
 
 import com.its.op.dto.ThreadMonitoringDto;
+import com.its.op.dto.WebsocketMonitoringDto;
+import com.its.op.websocket.ItsWebSocketSession;
+import com.its.op.websocket.ItsWebSocketSessionManager;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.web.socket.WebSocketSession;
 
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -14,6 +19,7 @@ import java.util.stream.Collectors;
 public class ResourceMonitoringService {
 
     private final Map<String, Set<Thread>> threadMap = new HashMap<String, Set<Thread>>();
+    private final ItsWebSocketSessionManager itsWebSocketSessionManager;
 
     private Set<Thread> getActiveThreadSet() {
         //ThreadUtils.getAllThreads()
@@ -107,4 +113,19 @@ public class ResourceMonitoringService {
         }
         return result;
     }
+
+    public List<WebsocketMonitoringDto> getWebsocketList() {
+        List<WebsocketMonitoringDto> result = new ArrayList<>();
+        ConcurrentHashMap<WebSocketSession, ItsWebSocketSession> socketMap = this.itsWebSocketSessionManager.getMap();
+        socketMap.forEach((key, session) -> {
+            WebsocketMonitoringDto dto = WebsocketMonitoringDto.builder().build();
+            dto.setConnectTm(session.getConnectTm());
+            dto.setGroupId(session.getGroupId());
+            dto.setRemoteAddress(session.getSession().getRemoteAddress().toString());
+            dto.setUri(session.getSession().getUri().toString());
+            dto.setSessionId(session.getSession().getId());
+            result.add(dto);
+        });
+        return result;
+    }
 }

+ 2 - 0
src/main/java/com/its/op/websocket/ItsWebSocketHandler.java

@@ -1,6 +1,7 @@
 package com.its.op.websocket;
 
 import com.its.utils.ItsUtils;
+import com.its.utils.SysUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Controller;
@@ -43,6 +44,7 @@ public class ItsWebSocketHandler extends TextWebSocketHandler {
         super.afterConnectionEstablished(session);
 
         ItsWebSocketSession vo = new ItsWebSocketSession(this, session);
+        vo.setConnectTm(SysUtils.getSysTimeStr());
         this.itsWebSocketSessionManager.addSession(session, vo);
     }
 

+ 1 - 0
src/main/java/com/its/op/websocket/ItsWebSocketSession.java

@@ -14,6 +14,7 @@ public class ItsWebSocketSession {
     private ItsWebSocketHandler itsWebsocketHandler;
     private final WebSocketSession session;
     private String groupId;
+    private String connectTm;
 
     public ItsWebSocketSession(ItsWebSocketHandler itsWebsocketHandler, org.springframework.web.socket.WebSocketSession session) {
         this.itsWebsocketHandler = itsWebsocketHandler;

+ 2 - 2
src/main/resources/static/js/constant/constant.js

@@ -1,6 +1,6 @@
 // common.js restApi.js, websocket.js
-const _apiUrl = "http://115.91.94.42:8999";
-//const _apiUrl = "";
+//const _apiUrl = "http://115.91.94.42:8999";
+const _apiUrl = "";
 
 // map-config.js
 //const _mapHostUrl = "";