TIL 84일차

Moon-Tree·2023년 5월 2일
0

◆ 웹소켓(Websocket)

  • 실시간 양방향 통신을 위한 기술로, 서버와 클라이언트 간에 지속적인 연결을 유지하면서 데이터를 주고받을 수 있습니다.
  • 하지만, 서버에 대한 상당한 무리가 발생할 수 있기 때문에 웹소켓은 2개 이상 사용하는 것을 권장하지 않습니다.
  • 특히, 웹소켓 서버를 구성할 때 WebSocketServerConfiguration에서는 registry에서 2개 이상의 웹소켓을 사용하는 것을 권장하지 않습니다.
    - 이는 서버에 불필요한 부하를 일으킬 수 있기 때문입니다. 따라서 웹소켓을 사용하는 경우에는 하나의 웹소켓만 사용하도록 주의해야 합니다.
  • 만약, 여러 개의 웹소켓이 필요한 경우에는 스레드를 사용하여 다중 연결을 처리하거나, 웹소켓 클러스터링을 통해 서버 부하를 분산시키는 방법 등을 고려할 수 있습니다.
  • 하지만, 이러한 방법들도 서버 부하를 완전히 해결해주지는 않기 때문에, 가능한 한 웹소켓을 최소한으로 사용하는 것이 좋습니다.

ex) 아래와 같이 2개 이하로 사용을 권장

registry.addHandler(vueMemberWebSocketServer, "/ws/vuemember")
	.addInterceptors(new HttpSessionHandshakeInterceptor())
	.withSockJS();

handleTextMessage에서 수신되는 메세지는 두 가지 형태로 증가한다.

  • [1] 채팅 메세지 - {type : 1, content : "메세지 내용", room : null}
  • [2] 방 이동 메세지 - {type : 2, content : null, room : "1"}
  • 각각의 형태에 맞게 다른 메세지를 사용해야 한다.
if(채팅 메세지라면) {
	메세지를 수신하여 채팅과 관련된 처리만 한다.
}
else if(채널 이동 메세지라면) {
	메세지를 수신하여 채널 이동과 관련된 처리만 한다.
}

◆ clob와 varchar2

  1. varchar2
  • 가변 길이 문자열 데이터 타입으로, 최대 길이를 정할 수 있으며 그 이하의 길이의 문자열을 저장할 수 있다.
  • 일반적으로 사용되는 문자열 저장을 위한 데이터 타입 중 하나이다.
  • 예를 들어, "hello world"와 같은 짧은 문자열 데이터를 저장할 때 주로 사용된다.
  1. clob
  • 문자열 데이터를 대용량으로 저장하기 위한 데이터 타입으로, varchar2의 최대 길이를 초과하는 문자열 데이터를 저장할 수 있다.
  • 일반적으로 긴 텍스트나 문서, 블로그 글 등과 같은 대용량 문자열 데이터를 저장하기 위해 사용된다.
  • clob는 데이터 타입의 크기가 크기 때문에, 데이터를 저장하고 검색하는데 많은 시간이 소요될 수 있다.
  • CLOB로 사용하는 경우 데이터베이스는 더 큰 데이터 청크를 관리해야 하므로 VARCHAR2 열을 사용할 때보다 성능이 느려질 수 있습니다.
    -> 적은 양의 텍스트 데이터에는 varchar2를 사용하여 글자 수를 제한 하는 것이 좋습니다.

  • HttpSession(로그인 정보)는 일정시간(30분)이 지나면 정보가 사라지므로, WebSocketSession의 데이터를 사용하는 것을 권장한다.

  • ERD : 다대다 관계일 경우 중간에 테이블이 한 개 생성되어 있어야 한다.

  • message_no를 기본키를 설정하면 메세지 상세보기, 지우기, 수정하기 같은 기능을 설정할 수 있다.

  • 채팅 메세지를 읽었는지 확인하려면 테이블에서 "읽은 시간" 컬럼을 추가한다.

  • *VO의 기능 : 데이터 저장 및 읽기

profile
Backend Developer

0개의 댓글