2024/02 3

Springboot + jwt + web socket(STOMP) 채팅 구현

스프링부트로 채팅을 구현하기 위해 STOMP 프로토콜을 사용해보기로 했다. 구현을 위해 공부하는 과정에서 헷갈렸던 부분이 있어 적어둔다. STOMP(Simple Text Oriented Messaging Protocol)란 http와 호환되는 양방향 통신을 제공하기 위한 프로토콜이다. @RequiredArgsConstructor @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { private final StompHandler stompHandler; @Override public void configureMessageBroker(Message..

Spring & SpringBoot 2024.02.12

Flutter에서 json 파일 사용하기 - dynamic to String

Flutter 프로젝트 내부에서 json 파일을 사용할 때 값이 String이 아닌 dynamic으로 들어가면서 생긴 오류가 있었다. { "01호선": [ "중동", "도화", "간석", "개봉", "방학", "금정", "동암", "오산", // 등등 ], "02호선": [ "이대", "홍대입구", "건대입구", "구로디지털단지", "용두", "합정", ], // 등등... } 내가 사용하고자 하는 json파일은 대충 이렇게 생겼다! String jsonString = await rootBundle.loadString('asset/jsons/subway_stations.json'); final Map lineAndStations = json.decode(jsonString); selectedLine = ..

Flutter 2024.02.08

토큰 재발급 요청이 중복으로 나가는 문제 - 요청 대기열 만들어 해결

개인 프로젝트를 위한 플러터 앱에서 Dio Interceptor를 사용해서 토큰 에러가 나면 토큰 재발급을 위한 api로 요청을 보내 토큰을 재발급받는 로직으로 처리하고 있었다. 그런데 앱을 테스트할 때, 프론트에서 토큰 재발급 요청이 중복으로 날아가 서버에서 SQLIntegrityConstraintViolationException 이 발생하였다. 새로 생성된 refreshToken이 저장되는 과정에서 Duplicate entry 문제가 발생한 것인데, 로그를 찍어보니 프론트 상에서 토큰이 필요한 api를 중복으로 보낼때 적절한 처리가 되어있지 않아서 발생한 문제 같았다. 만약 인증이 필요한 여러 api를 호출하였는데, accessToken이 만료된 경우, 이 각 호출들이 Interceptor에서 같은 ..

Flutter 2024.02.06