{"repo":"platanus-kr/plata-anywhere-chat","free":true,"listed":false,"github":"https://github.com/platanus-kr/plata-anywhere-chat","clone":"git clone https://github.com/platanus-kr/plata-anywhere-chat.git","description":"Spring WebFlux Reactive WebSocket Backend application","language":"Java","stars":17,"topics":["webflux","spring","java","kafka","mongodb"],"license":null,"category":"data-pipelines","readme_excerpt":"plata-anywhere-chat Reactive WebSocket 기반 실시간 채팅 애플리케이션입니다. Gradle 멀티모듈 구조로 web 과 message 두 모듈을 제공합니다. 기술 스택 - Java 21, Spring Boot 3.4.1, Gradle Kotlin DSL - web : Spring Web, Spring Data JPA, Spring Data MongoDB, Spring Security, Thymeleaf - message : Spring WebFlux, Reactive WebSocket, Spring Data MongoDB Reactive, Kafka 선택 구성 - 인증: 외부 auth-service access token 프로토콜 모듈 인증 프로토콜 이 저장소는 자체 로그인, OAuth provider 연동, 서버 세션 인증을 제공하지 않습니다. 클라이언트는 별도 인증 서비스에서 발급받은 access token을 이 서비스에 전달합니다. 지원 방식: - HTTP API: Authorization: Bearer - 서버 렌더링 화면 보조: PAC ACCESS TOKEN 쿠키 또는 access token query parameter - WebSocket: 최초 SUBSCRIBE 메시지의 identifier.token 에 access token 전달 검증 규칙: - JWT alg 는 HS256 - type 클레임은 access - enabled 클레임은 true - 사용자 식별자는 sub - 역할은 role ( USER , ADMIN ) 필수 환경변수: 로컬 인프라 구성 서비스: 서비스 포트 용도 --- --- --- MongoDB 6.0 27017 채팅 메시지 저장 Redis Alpine 6379 로컬 보조 서비스 MariaDB 10.11 33306 - 3306 production 프로필용 MongoDB 인증: localtest / localtest (DB: pac ) 빌드 실행 접속: - 웹 UI: http://localhost:3120 - H2 콘솔: http://localhost:3120/h2-console - message WebSocket: ws://localhost:3121/message 로컬 개발 전용 토큰 쿠키 발급: 이 경로는 production 프로필에서는 활성화되지 않습니다. 기본 redirect는 /chat/lobby 입니다. 주요 API 인증 확인: 채팅방 목록: WebSocket SUBSCRIBE 예시: 구독 성공 후 서버는 token의 검증된 사용자 식별자와 표시명을 사용합니다. 실행 프로필 프로필 web 모듈 message 모듈 비고 --- --- --- --- 기본 H2 + MongoDB MongoDB Kafka 없이 로컬 개발 standalone - 환경변수 기반 docker-compose-standalone 사용 kafka - Kafka 브로커 포함 docker-compose-kafka 사용 production MariaDB + 환경변수 Kafka + 환경변수 PAC , AUTH ","default_branch":null,"files":null,"tree":[],"storefront":"/r/platanus-kr","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/platanus-kr/plata-anywhere-chat/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}