문제점 식별 웹소켓 STOMP을 통해 pub/sub 방식으로 메시지를 발행하고 JPA을 접목하여 메시지를 저장할 수 있었지만 큰 문제점이 있었다. 채팅방을 만들고 채팅을 보낼 때 유저가 현재 웹사이트에 들어오지 않았다면 유저에게 메세지를 읽지 않았다는 알림을 보내고 싶었다. 처음 생각은 이러했다. 세션에다가 정보를 담으면 되지 않을까? → 진행하는 프로젝트에서는 세션을 사용하지 않고 jwt을 통해 인증을 한다 또한 STOMP 방식은 기존 웹소켓 방식은 단순하고 편리하게 사용하는 게 목적이기에 세션을 사용하는 건 좋은 방법이 아니라고 생각했다. 유저가 웹소켓이 끊겼다는 정보와 유저가 무슨 채팅방들을 가지고 있는지 DB에 저장하는 방식은? → 가능은 하겠지만 너무 많은 리소스를 차지한다 좋지 않은 방법이라고..
SpringBoot
계기 팀원들과 스터디플랫폼 프로젝트를 진행하면서 팀원들과 다 같이 채팅서버를 구현하는 파트를 맡게 되었다. 요구사항은 이러했다. 하나의 스터디방에는 하나의 채팅방이 존재하고 그룹채팅방으로 존재한다. 같은 스터디방이 아니더라도 유저들끼리 1:1 채팅을 할 수 있다. 위에 2가지 요구사항 가지고 구현하려다보니 기존 웹소켓 방식으로 한계점이 있었고 STOMP 프로토콜 통한 방식으로 구현하려 한다. 기존 웹소켓 방식의 단점 : 웹 소켓 단점 STOMP란? STOMP (Simple Text Oriented Messaging Protocol)은 메세징 전송을 효율적으로 하기 위해 탄생한 프로토콜이고, 기본적으로 pub / sub 구조로 되어있어 메시지를 전송하고 메시지를 받아 처리하는 부분이 확실히 정해져 있기 때..
궁금증 ❓ 둘 다 Spring Bean으로 등록해 주는 어노테이션이지만 무엇이 다를까라는 의문점이 생겼다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) public @interfa..