Skip to content

Hongbeob/yogayo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📌 담당 역할 (황홍법)

  • WebRTC P2P 연결을 위한 시그널링 채널 구현
  • 로그인·회원가입: JWT 기반 인증 및 세션 관리 로직 개발
  • 사진 업로드: AWS S3 업로드 기능 담당

🔧 어려웠던 점과 해결 과정

1. WebRTC 시그널링 채널 끊김 문제

  • 문제 상황
    WebRTC 연결이 일정 시간 뒤 주기적으로 끊기는 현상이 발생.
    원인은 정확히 특정하기 어려웠지만,

    • 세션 관리 누락
    • heartbeat 프레임 불일치
      두 가지 가능성을 의심함.
  • 내가 확인한 부분

    • 서버에서 STOMP heartbeat를 30초 주기로 설정하고, heartbeat 프레임 수신 시 updateConnection()을 호출해 세션을 갱신하도록 구성됨.
    • 1분 이상 heartbeat가 없으면 서버가 DISCONNECT 이벤트를 발생시켜 연결을 종료함.
    • ICE 연결 상태가 "failed"일 경우 ICE restart를 트리거하여 재연결을 시도하는 로직도 확인함.
  • 해결 방법

    1. Heartbeat 처리 강화: 클라이언트와 서버 양쪽에서 heartbeat 송수신을 보장하고, 수신 시 lastActivityTime을 갱신하도록 수정
    2. 세션 관리 보완: ConcurrentHashMap 기반으로 활성 세션을 관리하고, updateConnection()이 누락되지 않도록 주기적 호출
    3. 재연결 로직 적용: ICE 연결 실패 시 자동으로 ICE restart를 트리거하여 재연결 시도
  • 결과

    • 일정 시간 이후에도 WebRTC 연결이 안정적으로 유지됨
    • 이전에 발생하던 주기적 연결 끊김 문제가 크게 완화됨

2. JWT 인증과 세션 관리

  • 문제 상황
    WebSocket 연결 시 단순 세션 ID만으로 사용자를 구분하기 어려움 → 인증된 사용자 식별 필요

  • 해결 방법

    • STOMP CONNECT 요청 시 JWT 토큰 검증을 수행
    • 토큰에서 추출한 사용자 정보를 UserSessionService에 저장하여 이후 signaling 메시지 처리 시 사용자 식별 가능

앱아이콘


📋 목차

  1. 서비스 소개

  2. 팀원

  3. 주요 기능

  4. 주요 기술

  5. 산출물 (아키텍쳐, API 명세서, ERD)


🧘🏻 서비스 소개

🗓️ 프로젝트 기간 : 2025.02.28 ~ 2025.04.11 (7주)

개요

SSAFY 12기 2학기 특화 프로젝트 도메인 인공지능(영상)

온디바이스AI를 이용한 요가 교육 어플리케이션입니다.

요가요는 온디바이스 AI 기술을 활용하여 모바일 환경에서 요가를 학습할할 수 있는 앱입니다.

사용자는 언제 어디서나 자신에게 맞는 요가 세션을 진행하며, 실시간 피드백을 통해 자세와 운동의 효율성을 개선할 수 있습니다.

또한, 멀티플레이 기능을 통해 친구와 함께 요가를 즐기거나, 그룹으로 서로의 진행 상황을 공유하며 동기부여를 얻을 수 있습니다.


🤝 팀원

경이현 프로필 김아름 프로필 김웅기 프로필 박성민 프로필 황선혁 프로필 황홍법 프로필
경이현
Infra/BE
김아름
Android
김웅기
AI
박성민
BE
황선혁
Android
황홍법
BE

💻 주요 기능

싱글 페이지(토글을 눌러 펼쳐주세요)
메인 코스 추가하기 코스 시작하기
싱글 메인페이지 코스 추가하는 다이얼로그 코스 입장 확인하는 다이얼로그
싱글 메인 페이지입니다. 코스를 선택할 수 있습니다. 코스를 추가하는 다이얼로그입니다. 코스시작작을 확인하는 다이얼로그입니다.
요가 설명 화면 플레이 화면
요가 동작을 설명하는 화면 요가를 하면서 피드백을 받는 화면
수행할 요가 동작을 설명하는 화면입니다. 요가를 하는 화면입니다. 사용자에게 실시간 피드백을 제공합니다.
결과 화면 결과 상세 화면
코스 결과 화면 코스 상세 결과 화면
코스 결과 화면입니다. 사용자의 요가 사진을 보여줍니다. 동작 상세 화면입니다. 요가 사진을 다운로드 받을 수 있습니다.
멀티 페이지(토글을 눌러 펼쳐주세요)
멀티 로비 화면 방 생성 다이얼로그 코스 생성 다이얼로그 방 입장 다이얼로그
로비 화면 방 생성 다이얼로그 코스 생성 다이얼로그 방 입장 다이얼로그
멀티 로비화면입니다. 방 목록을 확인할 수 있습니다. 방 생성 다이얼로그입니다. 코스를 선택할 수 있습니다 임시 코스 생성 다이얼로그 입니다. 방 입장 다이얼로그입니다.
대기 화면 플레이 화면 요가 결과 화면
대기 화면 플레이 화면 요가 결과 화면
시작 전 대기하는 화면입니다. 모든 유저들이 준비되면 시작됩니다. 플레이 화면입니다. 실시간 피드백을 받을 수 있습니다 이번 동작에 대한 다른 유저들의 점수와 최고 점수 유저의 사진을 볼 수 있습니다.
최종 결과 화면 종합 갤러리 화면 상세 갤러리 화면
최종 순위 화면 종합 갤러리 동작별 갤러리
최종 순위를 표시하는 화면입니다. 요가 별 최고 점수 유저의 사진을 보여주는 화면입니다. 특정 동작의 모든 유저의 사진을 보여주는 화면입니다다.
프로필 페이지(토글을 눌러 펼쳐주세요)
프로필 메인 화면 기록 상세 보기 화면 요가 동작 별 상세 정보 화면 뱃지 상세 화면
프로필 메인 화면 내 기록 상세 요가 동작 별 상세 뱃지 상세 화면
프로필 메인 화면입니다. 기록과 획득 뱃지를 볼 수 있습니다. 기록 상세 보기 화면입니다. 동작별 간략한 기록을 볼 수 있습니다. 요가 동작 별 상세화면입니다. 과거 기록들과 그래프화된 기록을 볼 수 있습니다. 뱃지 상세 화면입니다. 달성 조건들을 확인 할 수 있습니다.

🧑‍💻 주요 기술

[ 요가요 ]

  • 온디바이스 AI

[ FRONT ]

  • Android

  • Jetpack Compose

  • Hilt

  • Coil

  • Retrofit

  • OkHttp

  • WebSocket

  • WebRTC

  • MVI 패턴

  • 클린 아키텍처

[ BACK ]

  • 시그널링 서버

산출물

아키텍쳐

시스템아키텍쳐

API 명세서

API명세서

ERD

요가요erd


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published