2023 서일대학교 NINETO6 팀 프로젝트
신창섭 |
이준모 |
2023.06 - 2023.11
양방향 통신 웹 메신저 서비스
평소에 자주쓰던 'KAKAOTALK', 'LINE' 을 보며 웹에서도 구현해볼 수 있을까? 라는 의문에 시작하게 된 프로젝트.
웹 브라우저에는 채팅방을 생성하여 실시간으로 채팅할 수 있는 플랫폼이 많이 없다고 생각했었는데
비 연결성 프로토콜인 Http
통신 방식에 관해 공부하고 있던 중 Websocket
과 같은 양방향 네트워크 프로토콜 기반으로 동작하는
Simple Text Oriented Messaging Protocol(STOMP)
에 대해 알게 되어 구현해 보고자 했다.
- 실시간으로 서로의 채팅을 볼 순 없을까? 연결형 프로토을 사용하자!
- 전송 후에 연결이 끊기는 `HTTP` 를 유지 할 순 없을까? `WebSocket` 을 활용하자! 클라이언트와 서버 간에 데이터를 양방향으로 전송
- 메세지를 보냄으로서 생기는 지연은 어떻게 해결할까? `Message Broker` 를 사용하자!
- DB 및 ERD-CLOUD 설계
- Token Hiding
- Refreash Token 구현
- SSL, TLS 인증서 등록 (HTTPS)
- Security 추가
- JWT 인증 방식 추가
- Web Server Engine X 설정
- Swagger 로 관리
- 프로필 수정, 프로필 상세 메세지
- 친구추가 및 채팅방 개설 구현
- 친구목록 조회
- 채팅리스트 조회
- 실시간 채팅 구현
- 채팅 버블 및 안읽은 채팅 표시 구현
- 알람기능 구현
- 각 요청 Validation
- 채팅 메세지 Lazy-Loading 구현
- 단체 채팅방
- 이미지 업로드 ( 30일 뒤 제거 배치 후순위 )
- Project: React ^18.2.0
- Language: typescript ^4.9.5
- Dependencies
- react-hook-form: ^7.48.2
- react-helmet: ^6.1.0
- axios: ^1.6.1
- sockjs-client: ^1.6.1
- @stomp/stompjs: ^7.0.0
- tailwindcss: ^3.3.5
- Project: Gradle
- SpringBoot: 2.7.17
- Language: Java 11
- Dependencies
- jjwt: 0.9.1
- json-simple: 1.1.1
- jaxb-runtime: 2.3.2
- springdoc-openapi-ui: 1.7.0
- mybatis-spring-boot-starter:2.3.1
- spring-boot-starter-security
- spring-boot-starter-web
- spring-boot-starter-websocket
- spring-boot-starter-validation
- spring-boot-starter-data-mongodb
- spring-boot-starter-data-redis
- spring-boot-starter-test
- mysql-connector-j
- lombok