From 91e556aaf295c408371022d7ec17134a3e4c757b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?scnoh=28=EB=85=B8=EC=8A=B9=EC=B2=A0=29?= Date: Tue, 20 Sep 2022 11:03:26 +0900 Subject: [PATCH] =?UTF-8?q?socet=20server=20=EA=B5=AC=EC=A1=B0=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=EC=9E=91=EC=97=85(2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../palnet/comn/collection/GPCollection.java | 2 +- .../message/producer/MessageProducer.java | 22 +++++- .../palnet/server/command/SocketCommand.java | 77 +++++++++++++------ .../palnet/server/handler/SocketHandler.java | 2 +- src/main/resources/application.yml | 14 +++- 5 files changed, 86 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/palnet/comn/collection/GPCollection.java b/src/main/java/com/palnet/comn/collection/GPCollection.java index c8f4c31..b280c1f 100644 --- a/src/main/java/com/palnet/comn/collection/GPCollection.java +++ b/src/main/java/com/palnet/comn/collection/GPCollection.java @@ -62,7 +62,7 @@ public class GPCollection { data.setPostionHistory(historyList); /* Message Queue Server 전달 */ - messageProducer.sendToAppServerMessage(data); + messageProducer.sendControlMessage(data); try { Socket socket = new Socket(); diff --git a/src/main/java/com/palnet/process/message/producer/MessageProducer.java b/src/main/java/com/palnet/process/message/producer/MessageProducer.java index ebfd6e9..50a9750 100644 --- a/src/main/java/com/palnet/process/message/producer/MessageProducer.java +++ b/src/main/java/com/palnet/process/message/producer/MessageProducer.java @@ -32,7 +32,7 @@ public class MessageProducer { this.receiver = receiver; } - public void sendToAppServerMessage(GPModel model) { + public void sendControlHistoryMessage(GPModel model) { String json = ""; try { @@ -41,14 +41,30 @@ public class MessageProducer { e.printStackTrace(); } - log.info("send to model : {}" ,model); +// log.info("[APP MESSAGE] HISTORY DATA : {}" ,model); rabbitTemplate.convertAndSend( Objects.requireNonNull(env.getProperty("message.app.exchange-name")), Objects.requireNonNull(env.getProperty("message.app.routing-key")), json ); + } + + public void sendControlMessage(GPModel model) { + String json = ""; -// receiver.getLatch().await(1000, TimeUnit.MILLISECONDS); + try { + json = objectMapper.writeValueAsString(model); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + +// log.info("[WEBSOCKET MESSAGE] CONTROL DATA : {}" ,model); + + rabbitTemplate.convertAndSend( + Objects.requireNonNull(env.getProperty("message.websocket.exchange-name")), + Objects.requireNonNull(env.getProperty("message.websocket.routing-key")), + json + ); } } diff --git a/src/main/java/com/palnet/server/command/SocketCommand.java b/src/main/java/com/palnet/server/command/SocketCommand.java index d724100..59bf7ed 100644 --- a/src/main/java/com/palnet/server/command/SocketCommand.java +++ b/src/main/java/com/palnet/server/command/SocketCommand.java @@ -16,13 +16,12 @@ import org.springframework.core.env.Environment; import java.io.IOException; import java.io.OutputStream; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.net.SocketAddress; +import java.net.*; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; +import java.util.*; public class SocketCommand { @@ -32,7 +31,7 @@ public class SocketCommand { public SocketCommand() { this.messageProducer = (MessageProducer) ContextUtils.getBean("messageProducer"); - this.env = env; + this.env = (Environment) ContextUtils.getBean("environment") ; } GPCollection collection = new GPCollection(); @@ -142,31 +141,59 @@ public class SocketCommand { model.setPostionHistory(hisList); // STEP 1. Control ID 발급 -> Application Server Http 통신 + try { + HttpRequest request = HttpRequest.newBuilder() +// .uri(new URI("http://127.0.0.1:8080/api/ctr/cntrl/id/" + model.getObjectId())) + .uri(new URI(env.getProperty("app.host") + "api/ctr/cntrl/id/" + model.getObjectId())) + .version(HttpClient.Version.HTTP_2) + .GET() + .build(); + HttpResponse response = HttpClient + .newHttpClient() + .send(request, HttpResponse.BodyHandlers.ofString()); +// logger.info("CONTROL ID RESPONSE : {}", response.body()); - // STEP 2. 이력 생성할 전문 전달 - messageProducer.sendToAppServerMessage(model); - - // STEP 3. 화면에 표출할 정보 WebSocket 전달 - try { - Socket socket = new Socket(); - SocketAddress address = new InetSocketAddress( - env.getProperty("netty.websocket.host"), - Integer.parseInt(env.getProperty("netty.websocket.port")) - ); - socket.connect(address); - - String gpsJson = JsonUtils.toJson(model); + Map body = JsonUtils.fromJson(response.body(), HashMap.class); - OutputStream outputStream = socket.getOutputStream(); - outputStream.write(gpsJson.getBytes(StandardCharsets.UTF_8)); - outputStream.flush(); + Map data = (Map) body.get("data"); + model.setControlId((String) data.get("controlId")); + model.setTypeCd((String) data.get("typeCd")); + model.setAreaTrnsYn((String) data.get("areaTrnsYn")); + model.setServerRcvDt(DateUtils.getCurrentTime()); - socket.close(); } catch (IOException e) { - logger.error(""); + logger.error("요청한 URL 정보가 잘못되었습니다.", e); + } catch (Exception e) { + } + + // STEP 2. 이력 생성할 전문 전달 + messageProducer.sendControlHistoryMessage(model); + + // STEP 3. 화면에 표출할 정보 WebSocket 전달 + messageProducer.sendControlMessage(model); + +// try { +// Socket socket = new Socket(); +// SocketAddress address = new InetSocketAddress( +// env.getProperty("netty.websocket.host"), +// Integer.parseInt(env.getProperty("netty.websocket.port")) +// ); +// +// socket.connect(address); +// +// String gpsJson = JsonUtils.toJson(model); +// +// OutputStream outputStream = socket.getOutputStream(); +// outputStream.write(gpsJson.getBytes(StandardCharsets.UTF_8)); +// outputStream.flush(); +// +// socket.close(); +// } catch (IOException e) { +// logger.error(""); +// } // dataList.add(model); } else { diff --git a/src/main/java/com/palnet/server/handler/SocketHandler.java b/src/main/java/com/palnet/server/handler/SocketHandler.java index 329fcf3..4b456a7 100644 --- a/src/main/java/com/palnet/server/handler/SocketHandler.java +++ b/src/main/java/com/palnet/server/handler/SocketHandler.java @@ -51,7 +51,7 @@ public class SocketHandler extends SimpleChannelInboundHandler { res.setRspMessage("Invalid auth key !"); } else { - logger.info("====> Socket Payload : {}", JsonUtils.toJson(payload)); + logger.info("====> SOCKET BODY : {}", JsonUtils.toJson(payload)); switch (payload.getCommand().trim()) { case "OPENSKY" : diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 1729814..667c8d5 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -34,6 +34,9 @@ message: exchange-name: websocket.drone.exchange routing-key: websocket.drone.routing.# +app: + host: http://127.0.0.1:8080/ + --- spring: @@ -68,6 +71,9 @@ message: exchange-name: websocket.drone.exchange routing-key: websocket.drone.routing.# +app: + host: http://211.253.38.218:8080/ + --- spring: @@ -114,6 +120,9 @@ logging: level: com.palnet: debug +app: + host: http://211.253.38.218:8080/ + --- spring: @@ -155,4 +164,7 @@ logging: file: name: /data/logs/data.log level: - com.palnet: debug \ No newline at end of file + com.palnet: debug + +app: + host: http://211.253.38.218:8080/ \ No newline at end of file