WebSocketHandler의 기본적인 기능을 간단하게 커스텀 해본 코드
/* 웹 소켓 활성화 session 관리 */
private final List<WebSocketSession> sessionList = new ArrayList<WebSocketSession>();
/** WebSocket 연결 성공 시 사용할 준비가 완료 될 때 호출 될 메소드
* @param WebSocketSession
* */
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
log.info("{} 연결 활성화", session.getId());
sessionList.add(session);
log.info("{} 웹 소켓 session 생성 완료", session);
}
/** 새로운 WebSocket 메시지가 도착했을 때 호출,
* 수식 된 메세지 처리 및 응답 생성,
* ex) 특정 메시지 유형 파싱 -> 그에 대한 응답 생성
* @param WebSocketSession ㅡ WebSocketMessage
* */
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
// TODO Auto-generated method stub
String payload = message.getPayload().toString();
log.info("## payload 정보 == {}", payload);
log.info("## message Type == {}", message.getClass());
for(WebSocketSession sesion : sessionList) {
log.info("## 전송 되는 Session 정보 =={}", session.getId());
log.info("## 전송 되는 message 정보 == {}", message);
session.sendMessage(message);
}
}
/** 웹소켓 오류 처리
* 연결이 유실 or 오류 발생 시 대처 방법
* */
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
// TODO Auto-generated method stub
}
/**연결 종료 이후 호출
* 정리 작업 등
* DB 저장에 사용을 하거나, 저장 처리 하면 될 것 같다
* */
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
log.info("{} 웹소켓 해제", session);
sessionList.remove(session);
}
/**
* 이 메소드는 WebSocketHandler가 부분 메세지를 처리하느지에 대한 여부
* 부분 메세지 처리시 True , 아닐 경우 False
* 실시간 구현이라면 True가 적절해 보임
*
* */
@Override
public boolean supportsPartialMessages() {
boolean ck =true;
return ck;
}
이 상태로 서버를 실행하려니까, WebSocketHandler에 이상이 있다고 뜬다
WebSocketConfig 파일을 살펴보자
#WebSocketConfig 파일이다.
이 부분에서 WebSocketHandler를 참조하는데 webSocketHandler가 addHandler 메소드를 실행하며, error가 생긴 걸로 보인다.
하지만 WebSocketHandler를 상속받는 CustomWebSocketHandler를 만들어두어서 괜찮다고 생각했는데,
해당 파일의 webSocketHandler를 커스텀 생성자를 이용해 주입해본다.
서버 실행이 되고 해당 url 로 접근해보니 웬걸,,
그리고 뜬 error message
이번엔 DefulatHandShakeHandler에서 에러가 뜬다,, ㅜ
여기서 부터는 구조적 정리가 병행 되어야 할 것 같다... 내일은 webSocket 구조정리로 찾아뵙겠습니다.!
반응형
'IT > Spring' 카테고리의 다른 글
Spring webSoket- 기본 개념을 따라서(2) (0) | 2024.05.04 |
---|