AI-WebRTC 동시 성능 테스트 환경 구축"
LiveKit 토큰 디버깅 & AI 연동 (2026-01-29)
- 🔍 문제: 401 Unauthorized 무한 반복 올바른 API 키를 사용했음에도 AI Bot이 LiveKit에 접속하지 못하는 현상 발생.
원인 분석 및 해결 과정 시차 문제 (Clock Skew): 로컬 PC 시간과 서버 시간 불일치로 nbf(Not Before) 조건 실패. 시도: 시간을 5분 전으로 설정해 생성. -> 실패 해결: nbf 조건을 아예 제거하여 시차 문제를 원천 차단. 권한 문제 (Permission): 접속은 되는데 AI 기능(핸드폰 인식 등)이 작동 안 함. 발견: 백엔드 로직을 따라하다 보니 canPublishData(데이터 전송 권한)를 누락함. 해결: nbf는 끄고, canPublishData: True는 켜는 ‘완전체 토큰’ 생성. 실행 편의성: 터미널 복사/붙여넣기 시 긴 토큰이 잘리는 문제. 해결:
start_ai.bat 배치 파일을 만들어 더블클릭 실행 지원.
- 🏛️ 아키텍처: 이중 연결 (Dual-Connection) 구조 AI가 ‘유저의 얼굴’을 봐야 하지만, 유저는 ‘아바타’를 보고 싶어 하는 요구사항 충돌 해결.
“따로 또 같이” 전략 LiveKit (미디어 채널): 브라우저는 실제 카메라(Real Camera) 를 송출 (UI에는 숨김). AI는 이 채널을 구독하여 얼굴 분석. WebSocket (제어 채널): AI가 분석한 데이터(집중도/상태)를 프론트엔드로 전송. 프론트엔드는 이 데이터를 받아 아바타(Avatar) 표정으로 매핑하여 표시.
- 🛡️ 충돌 해결: 로컬 선(先) 통합 GitLab에서 충돌을 해결하는 대신, 로컬 브랜치로 origin/fe를 먼저 당겨와서 해결.
충돌 지점:
RoomManager (Head: 실제 카메라 vs Origin: 가상 카메라) 결정: AI 분석을 위해 실제 카메라(Head) 로직을 채택하되, UI 컴포넌트는 Origin의 것을 유지.