프로젝트 기간 : 2025.01 ~ 2025.02 (8주)
“알고리즘 문제를 풀고 있는 사람들과 실시간으로 소통하면 어떨까?”
본 프로젝트는 백준 온라인 저지(BOJ)에서 문제를 푸는 사용자들이 실시간으로 의견을 교환하고 도움을 주고받을 수 있도록, WebSocket을 활용해 만든 실시간 채팅 서비스입니다.
(1) 기존 커뮤니케이션 한계 백준 알고리즘 문제를 풀 때 막히는 점이 생기면, “질문 게시판”, “블로그 포스팅”, “카카오톡 오픈채팅방” 등을 통해 도움을 얻고는 했습니다. 하지만 이는 단방향 적이거나, 즉각적인 피드백을 받기 어려웠습니다.
(2) 실시간 소통의 필요성 알고리즘 문제를 풀 때, 필요시에 실시간으로 도움을 주고받고 토론할 수 있다면 학습 효율과 재미가 크게 높아질 것이라 생각했습니다.
(3) 크롬 익스텐션을 통한 확장 백준 서버 자체에 채팅 기능을 직접 추가할 수 없으므로, 크롬 익스텐션 개발을 통해 사용자가 BOJ 사이트를 이용할 때 자연스럽게 채팅 기능을 활용할 수 있도록 했습니다.
└─com
└─prod
└─realtimechat
│ RealTimeChatApplication.java
│
├─chat
│ ├─application
│ │ ChatService.java
│ │ ChatServiceImpl.java
│ │ SequenceGeneratorService.java
│ │
│ ├─config
│ │ WebSocketConfig.java
│ │
│ ├─domain
│ │ Chat.java
│ │ ChatJpa.java
│ │ Sequence.java
│ │
│ ├─exception
│ │ CustomSocketException.java
│ │
│ ├─handler
│ │ ChatListener.java
│ │ CustomWebSocketHandler.java
│ │ StompListener.java
│ │ WebSocketBroadCaster.java
│ │ WebSocketExceptionHandler.java
│ │
│ ├─infrastructure
│ │ │ ChatRepository.java
│ │ │
│ │ ├─jdbc
│ │ ├─jpa
│ │ │ JpaChatRepository.java
│ │ │
│ │ ├─mongo
│ │ │ MongoChatRepositoryImpl.java
│ │ │ SpringDataMongoChatRepositoryImpl.java
│ │ │
│ │ └─springdata
│ │ ├─springdatajpa
│ │ │ SpringDataJpaChatRepositoryImpl.java
│ │ │
│ │ └─springdatamongo
│ │ SpringDataMongoChatRepository.java
│ │
│ └─presentation
│ ChatController.java
│ ChatWebSocketController.java
│ initController.java
│
├─config
│ CorsConfig.java
│ MainConfig.java
│ RedisConfig.java
│ WebConfig.java
│ WebSecurityConfig.java
│
└─shared
├─global
│ ├─aop
│ │ PerformanceLoggingAspect.java
│ │
│ ├─api
│ │ ApiResponse.java
│ │ ErrorResponse.java
│ │
│ ├─dto
│ │ ChatMessageDto.java
│ │ ChatRoomDto.java
│ │
│ ├─exception
│ │ GlobalExceptionHandler.java
│ │
│ └─type
│ │ Type.java
│ │
│ ├─http
│ │ HttpErrorType.java
│ │ HttpSuccessType.java
│ │
│ └─ws
│ WsErrorType.java
│
├─jwt
│ JwtAuthenticationFilter.java
│ JwtAuthenticationProvider.java
│ JwtAuthenticationToken.java
│ JwtChannelInterceptor.java
│ JwtException.java
│ JwtExceptionHandler.java
│ JwtProperties.java
│ JwtProvider.java
│ TokenClaims.java
│
└─utils
IpAddressUtil.java










