Browse Source
https://www.notion.so/PAV-KAC-websocket-client-schedule-call-25d5df23be114f8997aee9b2b51697f4?pvs=4feature/socket
지대한
6 months ago
16 changed files with 204 additions and 54 deletions
@ -0,0 +1,49 @@
|
||||
package kr.co.palnet.kac.websocket.core.codec; |
||||
|
||||
import com.fasterxml.jackson.core.type.TypeReference; |
||||
import com.fasterxml.jackson.databind.JsonNode; |
||||
import com.fasterxml.jackson.databind.ObjectMapper; |
||||
import io.netty.channel.ChannelHandlerContext; |
||||
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; |
||||
import io.netty.handler.codec.http.websocketx.WebSocketFrame; |
||||
import io.netty.handler.codec.http.websocketx.extensions.WebSocketExtensionDecoder; |
||||
import kr.co.palnet.kac.util.ObjectMapperUtil; |
||||
import kr.co.palnet.kac.websocket.core.model.BoundaryCoordinates; |
||||
import kr.co.palnet.kac.websocket.core.model.ControlRq; |
||||
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
|
||||
import java.util.List; |
||||
|
||||
|
||||
@Slf4j |
||||
@RequiredArgsConstructor |
||||
public class ControlDecoder extends WebSocketExtensionDecoder { |
||||
|
||||
private final ObjectMapper objectMapper = ObjectMapperUtil.getObjectMapper(); |
||||
|
||||
@Override |
||||
protected void decode(ChannelHandlerContext ctx, WebSocketFrame msg, List<Object> out) throws Exception { |
||||
try { |
||||
if (msg instanceof TextWebSocketFrame textWebSocketFrame) { |
||||
String json = textWebSocketFrame.text(); |
||||
JsonNode jsonNode = objectMapper.readTree(json); |
||||
String type = jsonNode.get("type").asText(); |
||||
switch (type) { |
||||
case "CURRENT_DRONE": |
||||
ControlRq<List<BoundaryCoordinates>> controlRq = objectMapper.readValue(json, new TypeReference<>() { |
||||
}); |
||||
out.add(controlRq); |
||||
break; |
||||
default: |
||||
log.warn("decode type is empty."); |
||||
break; |
||||
} |
||||
} |
||||
} catch (Exception e) { |
||||
log.warn("decode parsing error : {}\ndata in : {}", e.getMessage(), msg); |
||||
} |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,15 @@
|
||||
package kr.co.palnet.kac.websocket.core.model; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Builder; |
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
|
||||
@Data |
||||
@NoArgsConstructor |
||||
@AllArgsConstructor |
||||
@Builder |
||||
public class BoundaryCoordinates { |
||||
private double lat; |
||||
private double lon; |
||||
} |
@ -0,0 +1,19 @@
|
||||
package kr.co.palnet.kac.websocket.core.model; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Builder; |
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
|
||||
import java.util.List; |
||||
|
||||
@Data |
||||
@NoArgsConstructor |
||||
@AllArgsConstructor |
||||
@Builder |
||||
public class ControlRq<T> { |
||||
|
||||
private String type; |
||||
private T body; |
||||
|
||||
} |
@ -0,0 +1,15 @@
|
||||
package kr.co.palnet.kac.websocket.core.model; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Builder; |
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
|
||||
@Data |
||||
@NoArgsConstructor |
||||
@AllArgsConstructor |
||||
@Builder |
||||
public class ErrorRs { |
||||
private String code; |
||||
private String message; |
||||
} |
Loading…
Reference in new issue