채팅 - WebSocket Test

JinJinJara·2023년 11월 14일
0

TIL

목록 보기
16/19

Test용

  1. 크롬 확장 프로그램
  • WebSocket Test Client 설치
  • ws:// WebSocket 프로토콜을 사용
  • ws/chat : 웹 소켓서버에서 특정한 기능이나 서비스를 제공하는 경로로, 클라이언트는 엔트포이트로 연결
  • socket Open 후 메시지 작성
  1. Postman
  • WebSocket 프로토콜 선택 Connect-Message 작성

📌 WebSocketSession ?

WebSocketSession에는 주로 연결된 클라이언트와 서버 간의 WebSocket 연결에 관한 정보가 포함
이 정보는 주로 WebSocket 연결의 상태 및 세부적인 속성을 추적하고, 서버에서 클라이언트와의 통신을 지원하는 데 사용

WebSocketSession에 저장되는 주요 정보 및 시점

  1. 연결 정보:
  • 연결 ID: 연결을 고유하게 식별하는 ID입니다. 일반적으로 서버에서 자동으로 생성
    프로토콜 버전: 사용 중인 WebSocket 프로토콜의 버전 정보
String sessionId = session.getId(); // 연결 ID
int protocolVersion = session.getProtocolVersion(); // 프로토콜 버전

  1. 속성 관리:
  • getAttributes 및 setAttribute 메서드를 사용하여 연결에 대한 사용자 정의 속성을 관리
    이를 통해 서버는 특정 연결에 대한 상태 정보를 저장하거나 검색 가능

// 속성 설정
session.getAttributes().put("userId", "123");

// 속성 읽기
String userId = (String) session.getAttributes().get("userId");
위의 예제에서는 연결에 "userId"라는 사용자 정의 속성을 설정하고 읽어오고 있습니다.

  1. 시점별 처리:
  • afterConnectionEstablished, afterConnectionClosed 등의 메서드를 통해 연결이 확립되거나 종료될 때 일부 정보를 설정하거나 처리할 수 있음

@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
    // 연결이 확립될 때 실행되는 로직
    // 예: 연결 ID 설정
    session.getAttributes().put("connectionTime", LocalDateTime.now());
}

@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
    // 연결이 종료될 때 실행되는 로직
    // 예: 연결 종료 시간 로깅
    LocalDateTime connectionTime = (LocalDateTime) session.getAttributes().get("connectionTime");
    log.info("Connection closed. Connection time: {}", connectionTime);
}

이와 같이 WebSocketSession 객체는 연결 관련 정보를 저장하고 관리하는 데 사용되며, 이 정보는 서버에서 클라이언트와의 상호작용을 효과적으로 처리하는 데 활용!

0개의 댓글