전체 글

전체 글

    [TIL - 20230605] RSocketRequester Redis 저장 실패

    💻문제점 현재 RSocketRequester를 로컬에서 저장하는데, 로컬에서 관리하지 않으려고 DB에 저장할까 했으나, 삭제와 저장이 빈번하게 일어나고 새로고침이나 뒤로가기 한 번으로 휘발되는 데이터라 굳이? 라는 생각이 들었다. 그래서 레디스에 저장을 하기로 했다. 📃시도 시도1 @Slf4j @Repository @RequiredArgsConstructor public class RSocketRepository { private final ReactiveRedisTemplate reactiveRedisTemplate; public Flux findAllByChattingAddress(String address) { return reactiveRedisTemplate.opsForSet().members(..

    [TIL - 20230603] Webflux, Mock 사용한 Channel 도메인, ChannelService 테스트 케이스 작성

    💻문제점 📃시도 🔍해결 🤦‍♀️의문점 💡알게 된 점

    [TIL - 20230602] RSocket 채팅 전송 시 토큰 검사, 토큰에서 데이터 추출

    💻문제점1 스트리밍 중인 채널에 접속하여 같은 채널에 있는 사람들끼리 채팅을 하도록 구현했다. 하지만 현재는 로그인 하지 않은 유저도 채팅이 가능하기 때문에, 로그인한 유저만 채팅을 보낼 수 있도록 하고 비회원 유저는 채팅을 보기만 하고 전송할 수는 없게 변경해야 했다. (방송 접속시 비회원/회원 무관하게 RSocket은 연결!) 📃문제점1-시도 서버에 채팅 전송 요청을 보낼 때 data에 token을 담아 서버에서 검증을 할까 했다. 그런데 채팅을 한 시간에 한 번만 보내는 것도 아니고, 1분에 10번 이상도 보낼 수 있는게 채팅이다. 매번 data에 token을 담아 서버에 전송해서 서버에서 확인을 하면 오버헤드가 너무 크지 않을까 생각이 들어 다른 방법을 생각했다. 🔍문제점1-해결 채팅을 보낼 때 ..

    [Spring] Webflux + RSocket, React 사용한 전체 채팅 구현

    Webflux에서 RSocket을 사용하여 전체 채팅을 구현해보자. build.gradle 의존성은 다음과 같이 추가했다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-rsocket' implementation 'org.springframework.boot:spring-boot-starter-webflux' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org...

    [TIL - 20230531-0601] RSocket을 사용해 채팅방 별 실시간 채팅하기

    💻현재 상황채널까지 생성했으니, 이제 해당 채널에 있는 사람이 채팅을 보낼 때 같은 채널에 있는 사람들에게만 채팅이 전달되어야 한다. 현재 진행된 채팅 기능은 채팅을 보내면 모든 사람이 채팅을 받게 되어있는데, 채팅방에 따라 RSocketRequester를 저장해주지 않고, 그냥 리스트에 모두 저장했기 때문이다. 일단 진행했던 빈 프로젝트에서 만든 RSocket 채팅을 기존에 진행하던 프로젝트로 옮겨왔다.이전에 개발한 내용은 다음 링크를 참고하면 된다.https://yeon-dev.tistory.com/207 [Spring] Webflux + RSocket, React 사용한 전체 채팅 구현Webflux에서 RSocket을 사용하여 전체 채팅을 구현해보자. build.gradle 의존성은 다음과 같이 ..

    [TIL - 20230531] webflux 채널 생성/조회

    💻구현 사용자가 스트리밍 중인 채널에 들어가면 해당 채널에 들어온 사람들끼리만 채팅이 가능해야 한다. 그러기 위해서는 우선 채널이 필요했다. 오늘도 정아님과 코딩 시작! 회원가입 시에 모든 사용자는 자신만의 채널을 갖게 된다. MemberService @Transactional public Mono signup(SignupRequestDto signupRequestDto) { return memberRepository .existsByUserId(signupRequestDto.getUserId()) .flatMap(exists -> { if (exists) return Mono.error(new IllegalArgumentException("중복된 아이디입니다.")); else { return membe..

    [TIL - 20230530] Webflux + RSocket 채팅

    💻구현 WebSocket으로 채팅방을 만들어 1:1대화는 만들어보았는데... 그건 Spring Web MVC의 이야기다. 우리는 WebFlux 프레임워크를 사용하기 때문에 RSocket으로 채팅을 구현했다. 비동기적으로 코드 짜는 것도 힘든데 여기에 채팅까지...? 관련 내용을 찾아보니 생각보다 RSocket이 WebSocket 보다 작성한 코드 양이 적었다. RSocket은 STOMP 프로토콜을 지원하지 않는다고 해서 걱정했는데, 전체 채팅은 금방 구현할 수 있었다. 내용은 여기서 확인! https://yeon-dev.tistory.com/207 [Spring] Webflux + RSocket, React 사용한 전체 채팅 구현 Webflux에서 RSocket을 사용하여 전체 채팅을 구현해보자. bui..