diff --git a/app/kac-socket-app/build.gradle b/app/kac-socket-app/build.gradle index bbffec7..2e4f027 100644 --- a/app/kac-socket-app/build.gradle +++ b/app/kac-socket-app/build.gradle @@ -1,9 +1,10 @@ dependencies { implementation "$boot:spring-boot-starter" + implementation "$spring:spring-web" implementation "io.netty:netty-all:4.1.68.Final" implementation project(":common:util") - compileOnly project(":common:model") + implementation project(":common:model") } diff --git a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/AdsbDronCommandImpl.java b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/AdsbDronCommandImpl.java index bbd8e1b..1d229ec 100644 --- a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/AdsbDronCommandImpl.java +++ b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/AdsbDronCommandImpl.java @@ -3,29 +3,21 @@ package kr.co.palnet.kac.socket.core.command.impl; import kr.co.palnet.kac.common.model.common.ControlDto; import kr.co.palnet.kac.common.model.common.DronDto; import kr.co.palnet.kac.common.model.common.DronHistoryDto; +import kr.co.palnet.kac.common.model.common.SimpleControlDto; import kr.co.palnet.kac.socket.core.command.DronCommand; import kr.co.palnet.kac.socket.core.model.DronRq; import kr.co.palnet.kac.socket.core.storage.ControlStorage; -import kr.co.palnet.kac.socket.core.storage.DronStorage; import kr.co.palnet.kac.socket.core.util.DronUtil; import kr.co.palnet.kac.socket.service.KacAppService; import kr.co.palnet.kac.socket.service.WebSocketService; -import kr.co.palnet.kac.util.ObjectMapperUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import java.io.IOException; -import java.net.URI; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; import java.time.Instant; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; @Slf4j @RequiredArgsConstructor @@ -92,40 +84,21 @@ public class AdsbDronCommandImpl implements DronCommand { if (dronCacheDTO == null) { // STEP 1. Control ID 발급 -> Application Server Http 통신 try { - // TODO 분리 - HttpRequest request = HttpRequest.newBuilder() - .uri(new URI( - kacAppHost + "/api/ctr/cntrl/id/" + dron.getObjectId() - )) - .version(HttpClient.Version.HTTP_2) - .GET() - .build(); - - HttpResponse response = HttpClient - .newHttpClient() - .send(request, HttpResponse.BodyHandlers.ofString()); - - log.debug("CONTROL ID RESPONSE : {}", response.body()); - - Map body = ObjectMapperUtils.getObjectMapper().readValue(response.body(), HashMap.class); - - Map data = (Map) body.get("data"); - dron.setControlId((String) data.get("controlId")); - dron.setTypeCd((String) data.get("typeCd")); - dron.setAreaTrnsYn((String) data.get("areaTrnsYn")); + SimpleControlDto simpleControlDto = kacAppService.getControlId(dron.getObjectId()); + + dron.setControlId(simpleControlDto.getControlId()); + dron.setTypeCd(simpleControlDto.getTypeCd()); + dron.setAreaTrnsYn(simpleControlDto.getAreaTrnsYn()); dron.setControlStartDt(Instant.now()); ControlDto controlDto = new ControlDto(); - controlDto.setControlId((String) data.get("controlId")); - controlDto.setTypeCd((String) data.get("typeCd")); - controlDto.setAreaTrnsYn((String) data.get("areaTrnsYn")); + controlDto.setControlId(simpleControlDto.getControlId()); + controlDto.setTypeCd(simpleControlDto.getTypeCd()); + controlDto.setAreaTrnsYn(simpleControlDto.getAreaTrnsYn()); controlDto.setRegTime(System.currentTimeMillis()); - controlStorage.put(dron.getObjectId(), controlDto); - } catch (IOException e) { - log.error("요청한 URL 정보가 잘못되었습니다.", e.getMessage()); } catch (Exception e) { - e.printStackTrace(); + log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace()); } } else { @@ -139,16 +112,24 @@ public class AdsbDronCommandImpl implements DronCommand { } // STEP 2. 이력 생성할 전문 전달 -> DRON의 대한 식별정보만 이력 관리 try { + /* // 저장 해 놓았다가 한거번에 전송 DronStorage dronStorage = DronStorage.getInstance(); dronStorage.add(dron); + */ + kacAppService.sendData(dron); } catch (Exception e) { log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace()); } // STEP 3. 화면에 표출할 정보 WebSocket 전달 - if ("PA".equals(dron.getObjectId().substring(0, 2))) { - webSocketService.sendData(dron); + try { + + if ("PA".equals(dron.getObjectId().substring(0, 2))) { + webSocketService.sendData(dron); + } + } catch (Exception e) { + log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace()); } } else { diff --git a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/AntosDronCommandImpl.java b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/AntosDronCommandImpl.java index 5502ebf..9fa64cc 100644 --- a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/AntosDronCommandImpl.java +++ b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/AntosDronCommandImpl.java @@ -3,29 +3,21 @@ package kr.co.palnet.kac.socket.core.command.impl; import kr.co.palnet.kac.common.model.common.ControlDto; import kr.co.palnet.kac.common.model.common.DronDto; import kr.co.palnet.kac.common.model.common.DronHistoryDto; +import kr.co.palnet.kac.common.model.common.SimpleControlDto; import kr.co.palnet.kac.socket.core.command.DronCommand; import kr.co.palnet.kac.socket.core.model.DronRq; import kr.co.palnet.kac.socket.core.storage.ControlStorage; -import kr.co.palnet.kac.socket.core.storage.DronStorage; import kr.co.palnet.kac.socket.core.util.DronUtil; import kr.co.palnet.kac.socket.service.KacAppService; import kr.co.palnet.kac.socket.service.WebSocketService; -import kr.co.palnet.kac.util.ObjectMapperUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import java.io.IOException; -import java.net.URI; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; import java.time.Instant; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; @Slf4j @RequiredArgsConstructor @@ -91,41 +83,23 @@ public class AntosDronCommandImpl implements DronCommand { if (dronCacheDTO == null) { // STEP 1. Control ID 발급 -> Application Server Http 통신 try { - HttpRequest request = HttpRequest.newBuilder() - .uri(new URI( - kacAppHost + "/api/ctr/cntrl/id/" + dron.getObjectId() - )) - .version(HttpClient.Version.HTTP_2) - .GET() - .build(); - - HttpResponse response = HttpClient - .newHttpClient() - .send(request, HttpResponse.BodyHandlers.ofString()); - - log.debug("CONTROL ID RESPONSE : {}", response.body()); - - Map body = ObjectMapperUtils.getObjectMapper().readValue(response.body(), HashMap.class); - - Map data = (Map) body.get("data"); - dron.setControlId((String) data.get("controlId")); - dron.setTypeCd((String) data.get("typeCd")); - dron.setAreaTrnsYn((String) data.get("areaTrnsYn")); + SimpleControlDto simpleControlDto = kacAppService.getControlId(dron.getObjectId()); + + dron.setControlId(simpleControlDto.getControlId()); + dron.setTypeCd(simpleControlDto.getTypeCd()); + dron.setAreaTrnsYn(simpleControlDto.getAreaTrnsYn()); dron.setControlStartDt(Instant.now()); ControlDto controlDto = new ControlDto(); - controlDto.setControlId((String) data.get("controlId")); - controlDto.setTypeCd((String) data.get("typeCd")); - controlDto.setAreaTrnsYn((String) data.get("areaTrnsYn")); + controlDto.setControlId(simpleControlDto.getControlId()); + controlDto.setTypeCd(simpleControlDto.getTypeCd()); + controlDto.setAreaTrnsYn(simpleControlDto.getAreaTrnsYn()); controlDto.setRegTime(System.currentTimeMillis()); - ControlDto newDronCacheDTO = ControlDto.builder().build(); - controlStorage.put(dron.getObjectId(), newDronCacheDTO); + controlStorage.put(dron.getObjectId(), controlDto); - } catch (IOException e) { - log.error("요청한 URL 정보가 잘못되었습니다.", e.getMessage()); } catch (Exception e) { - e.printStackTrace(); + log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace()); } } else { @@ -139,17 +113,24 @@ public class AntosDronCommandImpl implements DronCommand { } // STEP 2. 이력 생성할 전문 전달 -> DRON의 대한 식별정보만 이력 관리 try { + /* // 저장 해 놓았다가 한거번에 전송 DronStorage dronStorage = DronStorage.getInstance(); dronStorage.add(dron); + */ + kacAppService.sendData(dron); } catch (Exception e) { log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace()); } // STEP 3. 화면에 표출할 정보 WebSocket 전달 - if ("PA".equals(dron.getObjectId().substring(0, 2))) { - webSocketService.sendData(dron); + try { + if ("PA".equals(dron.getObjectId().substring(0, 2))) { + webSocketService.sendData(dron); + } + } catch (Exception e) { + log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace()); } } else { diff --git a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/SandboxDronCommandImpl.java b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/SandboxDronCommandImpl.java index b31faec..dac003e 100644 --- a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/SandboxDronCommandImpl.java +++ b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/SandboxDronCommandImpl.java @@ -3,29 +3,21 @@ package kr.co.palnet.kac.socket.core.command.impl; import kr.co.palnet.kac.common.model.common.ControlDto; import kr.co.palnet.kac.common.model.common.DronDto; import kr.co.palnet.kac.common.model.common.DronHistoryDto; +import kr.co.palnet.kac.common.model.common.SimpleControlDto; import kr.co.palnet.kac.socket.core.command.DronCommand; import kr.co.palnet.kac.socket.core.model.DronRq; import kr.co.palnet.kac.socket.core.storage.ControlStorage; -import kr.co.palnet.kac.socket.core.storage.DronStorage; import kr.co.palnet.kac.socket.core.util.DronUtil; import kr.co.palnet.kac.socket.service.KacAppService; import kr.co.palnet.kac.socket.service.WebSocketService; -import kr.co.palnet.kac.util.ObjectMapperUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import java.io.IOException; -import java.net.URI; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; import java.time.Instant; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; @Slf4j @RequiredArgsConstructor @@ -91,42 +83,23 @@ public class SandboxDronCommandImpl implements DronCommand { if (dronCacheDTO == null) { // STEP 1. Control ID 발급 -> Application Server Http 통신 try { - // TODO 분리 - HttpRequest request = HttpRequest.newBuilder() - .uri(new URI( - kacAppHost + "/api/ctr/cntrl/id/" + dron.getObjectId() - )) - .version(HttpClient.Version.HTTP_2) - .GET() - .build(); - - HttpResponse response = HttpClient - .newHttpClient() - .send(request, HttpResponse.BodyHandlers.ofString()); - - log.debug("CONTROL ID RESPONSE : {}", response.body()); - - Map body = ObjectMapperUtils.getObjectMapper().readValue(response.body(), HashMap.class); - - Map data = (Map) body.get("data"); - dron.setControlId((String) data.get("controlId")); - dron.setTypeCd((String) data.get("typeCd")); - dron.setAreaTrnsYn((String) data.get("areaTrnsYn")); + SimpleControlDto simpleControlDto = kacAppService.getControlId(dron.getObjectId()); + + dron.setControlId(simpleControlDto.getControlId()); + dron.setTypeCd(simpleControlDto.getTypeCd()); + dron.setAreaTrnsYn(simpleControlDto.getAreaTrnsYn()); dron.setControlStartDt(Instant.now()); ControlDto controlDto = new ControlDto(); - controlDto.setControlId((String) data.get("controlId")); - controlDto.setTypeCd((String) data.get("typeCd")); - controlDto.setAreaTrnsYn((String) data.get("areaTrnsYn")); + controlDto.setControlId(simpleControlDto.getControlId()); + controlDto.setTypeCd(simpleControlDto.getTypeCd()); + controlDto.setAreaTrnsYn(simpleControlDto.getAreaTrnsYn()); controlDto.setRegTime(System.currentTimeMillis()); - ControlDto newDronCacheDTO = ControlDto.builder().build(); - controlStorage.put(dron.getObjectId(), newDronCacheDTO); + controlStorage.put(dron.getObjectId(), controlDto); - } catch (IOException e) { - log.error("요청한 URL 정보가 잘못되었습니다.", e.getMessage()); } catch (Exception e) { - e.printStackTrace(); + log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace()); } } else { @@ -142,15 +115,22 @@ public class SandboxDronCommandImpl implements DronCommand { // STEP 2. 이력 생성할 전문 전달 -> DRON의 대한 식별정보만 이력 관리 try { + /* // 저장 해 놓았다가 한거번에 전송 DronStorage dronStorage = DronStorage.getInstance(); -// dronStorage.set(dron); + dronStorage.add(dron); + */ + kacAppService.sendData(dron); } catch (Exception e) { log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace()); } // STEP 3. 화면에 표출할 정보 WebSocket 전달 -// webSocketService.sendData(dron); + try { + webSocketService.sendData(dron); + } catch (Exception e) { + log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace()); + } Long end = System.currentTimeMillis(); log.info(">>> during time : {}::{}", dron.getObjectId(), end - start); diff --git a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/config/AppReadyEvent.java b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/config/AppReadyEvent.java index 0a88738..a0f10a2 100644 --- a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/config/AppReadyEvent.java +++ b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/config/AppReadyEvent.java @@ -1,6 +1,6 @@ package kr.co.palnet.kac.socket.core.config; -import kr.co.palnet.kac.socket.core.socket.TcpSocketServer; +import kr.co.palnet.kac.socket.core.socket.SocketServer; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.context.event.ApplicationReadyEvent; @@ -12,7 +12,7 @@ import org.springframework.stereotype.Component; @Component public class AppReadyEvent implements ApplicationListener { - private final TcpSocketServer socketServer; + private final SocketServer socketServer; @Override public void onApplicationEvent(ApplicationReadyEvent event) { diff --git a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/config/NettyConfig.java b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/config/NettyConfig.java index f0d6b1f..aca8c05 100644 --- a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/config/NettyConfig.java +++ b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/config/NettyConfig.java @@ -6,7 +6,7 @@ import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.handler.logging.LogLevel; import io.netty.handler.logging.LoggingHandler; -import kr.co.palnet.kac.socket.core.socket.TcpChannelInitializer; +import kr.co.palnet.kac.socket.core.socket.ChannelInitializer; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -31,7 +31,7 @@ public class NettyConfig { private int backlog; @Bean - public ServerBootstrap serverBootstrap(TcpChannelInitializer channelInitializer) { + public ServerBootstrap serverBootstrap(ChannelInitializer channelInitializer) { log.info(">>>>> serverBootstrap <<<<<"); // ServerBootstrap: 서버 설정을 도와주는 class ServerBootstrap b = new ServerBootstrap(); diff --git a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/socket/TcpChannelInitializer.java b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/socket/ChannelInitializer.java similarity index 92% rename from app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/socket/TcpChannelInitializer.java rename to app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/socket/ChannelInitializer.java index 629e4fd..84297f0 100644 --- a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/socket/TcpChannelInitializer.java +++ b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/socket/ChannelInitializer.java @@ -1,6 +1,5 @@ package kr.co.palnet.kac.socket.core.socket; -import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; import io.netty.handler.codec.json.JsonObjectDecoder; @@ -17,7 +16,7 @@ import org.springframework.stereotype.Component; @Slf4j @RequiredArgsConstructor @Component -public class TcpChannelInitializer extends ChannelInitializer { +public class ChannelInitializer extends io.netty.channel.ChannelInitializer { private final DronHandler dronSocketHandler; diff --git a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/socket/TcpSocketServer.java b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/socket/SocketServer.java similarity index 97% rename from app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/socket/TcpSocketServer.java rename to app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/socket/SocketServer.java index a4fed30..1439157 100644 --- a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/socket/TcpSocketServer.java +++ b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/socket/SocketServer.java @@ -13,7 +13,7 @@ import java.net.InetSocketAddress; @Slf4j @RequiredArgsConstructor @Component -public class TcpSocketServer { +public class SocketServer { private final ServerBootstrap serverBootstrap; private final InetSocketAddress tcpPort; private Channel serverChannel; diff --git a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/service/KacAppService.java b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/service/KacAppService.java index dd8d978..34de33b 100644 --- a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/service/KacAppService.java +++ b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/service/KacAppService.java @@ -1,15 +1,57 @@ package kr.co.palnet.kac.socket.service; import kr.co.palnet.kac.common.model.common.DronDto; +import kr.co.palnet.kac.common.model.common.SimpleControlDto; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.springframework.web.client.RestClient; +import org.springframework.web.util.UriComponentsBuilder; @Slf4j @RequiredArgsConstructor @Service public class KacAppService { + @Value("${app.kac-app.host}") + private String kacAppHost; + + private final String GET_CONTROL_ID = "/api/ctr/cntrl/id"; + private final String SEND_ALL = "/api/server/receiver/all"; + + // control id 가져오기 + public SimpleControlDto getControlId(String objectId) { + RestClient client = getRestClient(); + + String uriString = UriComponentsBuilder.fromPath(GET_CONTROL_ID) + .queryParam("objectId", objectId) + .build().toUriString(); + + ResponseEntity resp = client.get() + .uri(uriString) + .retrieve() + .toEntity(SimpleControlDto.class); + + return resp.getBody(); + } + + // dron 데이터 전송 public void sendData(DronDto dto) { + RestClient client = getRestClient(); + ResponseEntity resp = client.post() + .uri(SEND_ALL) + .contentType(MediaType.APPLICATION_JSON) + .body(dto) + .retrieve() + .toBodilessEntity(); + } + private RestClient getRestClient() { + return RestClient.builder() + .baseUrl(kacAppHost) + .build(); } + } diff --git a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/service/WebSocketService.java b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/service/WebSocketService.java index f795b44..f69a445 100644 --- a/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/service/WebSocketService.java +++ b/app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/service/WebSocketService.java @@ -3,15 +3,31 @@ package kr.co.palnet.kac.socket.service; import kr.co.palnet.kac.common.model.common.DronDto; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; import org.springframework.stereotype.Service; +import org.springframework.web.client.RestClient; + +import java.time.Instant; @Slf4j @RequiredArgsConstructor @Service public class WebSocketService { - public void sendData(DronDto dto) { + @Value("${app.web-socket-web.host}") + private String webSocketWebHost; + private final String SEND_DRON_DATA = "/v1/api/ws/dron"; + public void sendData(DronDto dto) { + RestClient client = RestClient.create(); + client.post() + .uri(webSocketWebHost + SEND_DRON_DATA) + .contentType(MediaType.APPLICATION_JSON) + .body(dto) + .retrieve() + .toBodilessEntity(); } + } diff --git a/app/kac-socket-app/src/main/resources/application.yml b/app/kac-socket-app/src/main/resources/application.yml index e347e54..8a672c1 100644 --- a/app/kac-socket-app/src/main/resources/application.yml +++ b/app/kac-socket-app/src/main/resources/application.yml @@ -10,7 +10,9 @@ app: kac-app: host: http://127.0.0.1:8000 web-socket: - host: http://127.0.0.1:8100 + host: http://127.0.0.1:8001 + web-socket-web: + host: http://127.0.0.1:8002 server: port: 8004 diff --git a/app/kac-websocket-app/build.gradle b/app/kac-websocket-app/build.gradle index a8dda8b..1eb857b 100644 --- a/app/kac-websocket-app/build.gradle +++ b/app/kac-websocket-app/build.gradle @@ -3,7 +3,7 @@ dependencies { implementation "$boot:spring-boot-starter-web" implementation "io.netty:netty-all:4.1.68.Final" implementation project(":common:util") - compileOnly project(":common:model") + implementation project(":common:model") } diff --git a/app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/config/NettyConfig.java b/app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/config/NettyConfig.java index 9bea0bc..278e1fb 100644 --- a/app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/config/NettyConfig.java +++ b/app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/config/NettyConfig.java @@ -6,7 +6,7 @@ import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.handler.logging.LogLevel; import io.netty.handler.logging.LoggingHandler; -import kr.co.palnet.kac.websocket.core.socket.DronChannelInitializer; +import kr.co.palnet.kac.websocket.core.socket.ChannelInitializer; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -32,7 +32,7 @@ public class NettyConfig { private int backlog; @Bean - public ServerBootstrap serverBootstrap(DronChannelInitializer channelInitializer) { + public ServerBootstrap serverBootstrap(ChannelInitializer channelInitializer) { log.info(">>>>> serverBootstrap <<<<<"); // ServerBootstrap: 서버 설정을 도와주는 class ServerBootstrap b = new ServerBootstrap(); diff --git a/app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/socket/DronChannelInitializer.java b/app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/socket/ChannelInitializer.java similarity index 88% rename from app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/socket/DronChannelInitializer.java rename to app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/socket/ChannelInitializer.java index cbae8f4..8f5c67c 100644 --- a/app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/socket/DronChannelInitializer.java +++ b/app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/socket/ChannelInitializer.java @@ -1,11 +1,9 @@ package kr.co.palnet.kac.websocket.core.socket; -import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; import io.netty.handler.codec.http.HttpObjectAggregator; import io.netty.handler.codec.http.HttpServerCodec; -import io.netty.handler.codec.http.websocketx.WebSocketFrameAggregator; import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler; import io.netty.handler.codec.http.websocketx.extensions.compression.WebSocketServerCompressionHandler; import io.netty.handler.timeout.IdleStateHandler; @@ -17,7 +15,7 @@ import org.springframework.stereotype.Component; @Slf4j @RequiredArgsConstructor @Component -public class DronChannelInitializer extends ChannelInitializer { +public class ChannelInitializer extends io.netty.channel.ChannelInitializer { private final WebSocketHandler webSocketHandler; diff --git a/app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/service/ScheduledService.java b/app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/service/ScheduledService.java index 54ce50d..eab93ab 100644 --- a/app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/service/ScheduledService.java +++ b/app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/service/ScheduledService.java @@ -22,18 +22,11 @@ public class ScheduledService { private final ObjectMapper objectMapper = ObjectMapperUtils.getObjectMapper(); - private int count = 0; - private int count2 = 0; - - @Scheduled(fixedDelay = 1000) - public void test() { - log.info("test.... : {}", count++); - } // 접속한 모든 채널에 데이터 전송 @Scheduled(fixedDelay = 10 * 1000) // 10초 public void sendAllChannel() { - log.info("sendAllChannel: {}", count2++); + log.info("ready send to all channel"); // 채널 가져오기 ChannelStorage channelStorage = ChannelStorage.getInstance(); ChannelGroup channelGroup = channelStorage.getAll(); @@ -53,6 +46,7 @@ public class ScheduledService { } catch (Exception e) { log.warn("send fail to all channel. : {}\n{}", e.getMessage(), e.getStackTrace()); } + log.info("done send to all channel"); } } diff --git a/build.gradle b/build.gradle index e8bebf4..9aec97f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,14 +1,15 @@ buildscript { ext { - spring = '3.2.2' + spring = 'org.springframework' boot = 'org.springframework.boot' + bootVersion = '3.2.2' lombok = 'org.projectlombok:lombok' } repositories { mavenCentral() } dependencies { - classpath("$boot:spring-boot-gradle-plugin:$spring") + classpath("$boot:spring-boot-gradle-plugin:$bootVersion") } } diff --git a/common/model/src/main/java/kr/co/palnet/kac/common/model/common/SimpleControlDto.java b/common/model/src/main/java/kr/co/palnet/kac/common/model/common/SimpleControlDto.java new file mode 100644 index 0000000..6ee90b9 --- /dev/null +++ b/common/model/src/main/java/kr/co/palnet/kac/common/model/common/SimpleControlDto.java @@ -0,0 +1,16 @@ +package kr.co.palnet.kac.common.model.common; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class SimpleControlDto { + private String controlId; + private String typeCd; + private String areaTrnsYn; +}