본문 바로가기

반응형
SMALL

Project

(31)
Nuwa Project - Custom Annotation 작업을 진행을 하던 도중 갑작스럽게 매번 쓰던 토큰 값을 가져오는 로직 간단하게 할 수 없을까 생각을 했습니다. @RequestHeader("Authorization") String accessToken @RequestHeader처럼 어노테이션으로 만들어서 쓰자란 생각이 들었습니다. 토큰 값을 가져와서 이메일을 꺼내 쓰는 일이 자주 있었습니다. 아니면 id값이라던지 등등 이 때 매번 헤더에서 토큰 값 가져와 -> 서비스로 넘겨서 email 추출 -> email 사용 이렇게 되었는데 전역적으로 설정하고 어노테이션으로 이메일만 바로 가져오면 훨씬 코드가 보기 좋을 것 같다고 생각했습니다. 이제 어노테이션으로 만들어보겠습니다. @Target(ElementType.PARAMETER) @Retention(Rete..
Chat Project (10) - STOMP Header, JWT Token 간단하게 구현하는 채팅은 이번이 마지막이 될 것 같습니다. 앞으로 더 고도화를 시킬 예정이 아니라면 포스팅이 없긴 하겠지만 새로 시작하는 프로젝트에서 WebSocket을 이용한 1:1, N:M 채팅 그리고 WebRTC를 이용한 음성 및 화상 구현 등을 진행 할 예정입니다. 고도화 된 내용을 보고 싶으시면 Nuwa Project에 업로드 되는 내용을 확인 해주시면 좋을 것 같습니다. STOMP Header에 JWT 토큰을 넣어야 되겠다고 생각이 들었습니다. JWT 토큰을 사용하는데 채팅방에 입장을 할 땐 API로 토큰 값을 확인합니다. 그런데 구독을 하거나 메세지를 보낼 때는 따로 토큰 값을 판별하지 않고 요청을 하도록 되어 있습니다. 여기서 토큰 값이 올바르게 갱신이 되지 않거나 만료가 된 상태로 채팅이..
Nuwa Project - 회원 가입, 로그인, 소셜 로그인 회원 가입, 로그인, 소셜 로그인은 여러 번 작성을 한 것 같아 링크만 남겨두겠습니다. 2024.01.09 - [Project] - Chats 프로젝트 (3) - logack, Signup 2024.01.09 - [Project/Chats] - Chats 프로젝트 (4) - Spring Security, Signup 2024.01.11 - [Project/Chats] - Chats 프로젝트 (5) - Spring Security, Login 2024.01.15 - [Project/Chats] - Chats 프로젝트 (6) - JWT, Login, Redis 2024.01.16 - [Project/Chats] - Chats 프로젝트 (7) - OAuth2.0, Login 역시 작성한 테스트 코드가 모두 성..
Nuwa Project - Connection refused curl: (7) Failed to connect to 127.0.0.1 port 8081: Connection refused Github Actions으로 빌드를 하는데 health check를 하던 도중 계속해서 오류가 나는 상황이 생겼습니다. 배포 과정에서 문제가 없고 실제 EC2에서 확인을 해보면 Spring Boot가 정상적으로 실행이 된 것도 확인이 되었습니다. 이러면 뭐가 문제일까.. 싶어서 처음부터 찾아봤습니다. 처음엔 Dokcer hub에 있는 image가 문제인가 하고 찾아 봤지만 아무 이상이 없었습니다. 그리고 docker-compose가 실행을 할 때 포트 번호가 겹치나 해도 오류 없이 Spring Boot가 정상적으로 실행 된 것이니 이것도 아니였습니다. 그럼 nginx.conf ..
Nuwa Proejct - RDS Connect Fail RDS 생성과 보안그룹 설정은 이곳에서 다루지 않습니다. 프로젝트 진행 당시 RDS 외부 접속이 되지 않아 엄청나게 시간을 쏟고 있었습니다. 약 하루 정도의 시간이 걸렸고 드디어.. 해결 했습니다. 기존에 사용하던 RDS는 어디서든 연동이 잘되어 이번에도 문제 없이 연동이 되겠지 하고 기존에 연동을 하던 방식 그대로 연동을 진행 했습니다. 데이터베이스 인스턴스 생성 -> 파라미터 그룹 지정 -> 보안 그룹 생성 이렇게까지 진행을 하면 RDS를 Local에서 연동이 가능했습니다. 여기서 EC2에선 접속이 잘 되는데 Local에서 연결을 계속해서 실패를 했습니다. Mariadb 공식 홈페이지 들어가서 Connect/J 버전 확인하고 mariadb-java-client dependency 내부도 확인 해보고 ..
Nuwa Project - Project Setting 이번에 새롭게 협업 프로젝트를 진행을 하기로 했습니다. 처음엔 이것 저것 어떤 프로젝트를 진행을 할까 고민을 하다 협업툴을 만들어보기로 결정을 했습니다. 협업툴이면 이것 저것 다양한 구현이 있을 것이라고 생각을 했고 재밌지 않을까 싶습니다. 일단 프로젝트 구성을 먼저 진행했습니다. Spring Boot: 3.2.2 JDK: 17 MariaDB: 10.6.14 Redis: 7.2.4 MongoDB: 7.0.5 간략한 버전 정보 입니다. 프로젝트 설정 후 사용하는 dependency를 주입해주고 Global 관련 설정을 해주도록 했습니다. 반환 값 설정, RestControllerAdvice로 예외 처리 설정 등을 하였습니다. @JsonInclude(JsonInclude.Include.NON_NULL) //..
Chats 프로젝트 (9) - STOMP, MongoDB 이번엔 STOMP를 활용해서 여러 개의 채팅방을 만들어서 관리를 해보도록 하겠습니다. STOMP STOMP (Simple Text Oriented Messaging Protocol)은 메세징 전송을 효율적으로 하기 위해 탄생한 프로토콜이고, 기본적으로 pub / sub 구조로 되어있어 메세지를 전송하고 메세지를 받아 처리하는 부분이 확실히 정해져 있기 때문에 개발자 입장에서 명확하게 인지하고 개발할 수 있는 이점이 있다. 한 줄로 정의하자면, STOMP 프로토콜은 WebSocket 위에서 동작하는 프로토콜로써 클라이언트와 서버가 전송할 메세지의 유형, 형식, 내용들을 정의하는 매커니즘이다. 또한 STOMP를 이용하면 메세지의 헤더에 값을 줄 수 있어 헤더 값을 기반으로 통신 시 인증 처리를 구현하는 것도..
Chats 프로젝트 (8) - WebSocket 웹소켓에 대해 구현을 해보려고 합니다. WebSocket 웹소켓을 사용해서 프로젝트를 진행하려고 합니다. 처음 사용을 해보고 주로 실시간을 위해 사용을 한다고 알고 있습니다. (채팅, 주식 등) 그래서 정리를 한번하고 구현에 들어가려고 합니다. H classruntime.tistory.com 스프링부트에서 웹소켓을 사용하기 위해서 Dependency를 추가합니다. build.gradle // WebSocket implementation 'org.springframework.boot:spring-boot-starter-websocket' 그리고 웹소켓 연결을 위한 config 파일을 생성을 합니다. WebSocketConfig.java @Configuration @EnableWebSocket public ..

반응형
LIST