Browse Source

socet server 구조 수정작업(2)

master
노승철 2 years ago
parent
commit
91e556aaf2
  1. 2
      src/main/java/com/palnet/comn/collection/GPCollection.java
  2. 22
      src/main/java/com/palnet/process/message/producer/MessageProducer.java
  3. 77
      src/main/java/com/palnet/server/command/SocketCommand.java
  4. 2
      src/main/java/com/palnet/server/handler/SocketHandler.java
  5. 12
      src/main/resources/application.yml

2
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();

22
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
);
}
}

77
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<String> 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 {

2
src/main/java/com/palnet/server/handler/SocketHandler.java

@ -51,7 +51,7 @@ public class SocketHandler extends SimpleChannelInboundHandler<SocketPayload> {
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" :

12
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:
@ -156,3 +165,6 @@ logging:
name: /data/logs/data.log
level:
com.palnet: debug
app:
host: http://211.253.38.218:8080/
Loading…
Cancel
Save