누구든지 누구나 될 수 있는 대규모 채팅은 실제 앱이 아닙니다. FastAPI 전체 자습서(초보자 → 배포)의 47과에서는 새롭고 작은 프로젝트에서 단계별로 WebSocket을 통한 인증과 코스당 하나의 방을 구축합니다. 한 줄씩 RoomManager: 룸 딕셔너리, 기본 설정으로 참여, 나가기(빈 룸 사라짐), 멤버 및 ONE 룸에만 도달하는 방송. 그런 다음 인증 문제가 발생합니다. 브라우저 WebSocket은 Authorization 헤더를 보낼 수 없습니다. 따라서 토큰은 쿼리 문자열(?token=…)에 들어가고 이를 쿠키 및 첫 번째 메시지 토큰과 비교합니다. WebSocket 종속성은 수락하기 전에 JWT의 유효성을 검사하고 WebSocketException(1008)을 발생시킵니다. 실제 클라이언트는 HTTP 403을 확인하고 TestClient는 코드 1008과 그 이유를 확인합니다. 등록된 사용자만을 위한 방(인증 대 권한 부여), 토큰이 만료되면 자동으로 닫히는 연결(asyncio.wait_for 시간 초과 포함), 최종적으로 정리, 일반 HTTP 요청으로 한 방에 알리는 교사. 실제 uvicorn 서버에 대한 2개의 데모와 메시지가 방에 도달하지 않았다는 것을 증명하는 방법을 포함한 11개의 테스트입니다. 💻 이 동영상의 코드: https://github.com/nileshborate/fastapi/tree/main/47-websockets-rooms 📂 전체 강좌 코드: https://github.com/nileshborate/fastapi ▶️ 전체 재생 목록: https://www.youtube.com/playlist?list=PLBjgbZvHwQmg 🌐 웹사이트: https://www.nileshtechnology.in ⏱️ 챕터 0:00 소개 0:05 숙제 답변(비디오 46): 비공개 메시지 + 두 개 없음 아샤 1:54 한 교실에서 실제 방으로 2:39 오늘의 계획 3:13 코드를 얻을 수 있는 곳(GitHub) 3:49 프로젝트: 메모리에 있는 사용자 5:03 RoomManager: 한 방으로 브로드캐스트 6:32 WebSocket을 통한 인증: 인증 헤더 없음 7:45 ws_session 종속성(수락 전) 9:38 룸 끝점: 등록된 사용자만 10:50 토큰이 만료되면 연결 닫기 12:26 최종: 모든 경우에 룸 나가기 13:03 HTTP를 통한 구성원 + 교사 공지 13:59 인증 데모: 403, 101 및 토큰 만료 15:10 룸 데모: 메시지가 룸에 유지됨 16:26 테스트: 인증 종료 WebSockets 17:51 테스트: 룸(메시지가 도착하지 않았음을 증명) 18:53 제작 전 19:37 3가지 일반적인 실수 20:17 인터뷰 질문 21:25 요약, 숙제 및 다음 작업 📝 숙제 1. 기록: 새 구성원은 가입 직후 룸의 마지막 20개 메시지를 받습니다(방당 deque(maxlen=20)) 2. DELETE /rooms/{room}/members/{username}(교사 전용)은 코드 1008과 "교사가 제거함"이라는 이유를 사용하여 방에서 해당 사용자의 모든 연결을 종료합니다. 3. 두 가지 모두에 대한 테스트 답은 다음 비디오에 있습니다! 🎯 이 비디오의 인터뷰 질문 • FastAPI에서 WebSocket을 어떻게 인증합니까? • 채팅방은 어떻게 구축하나요? • WebSocket이 열려 있는 동안 JWT가 만료되면 어떻게 됩니까? ⏭️ 다음 비디오: Async Deep Dive – def vs async def, 이벤트 루프, 스레드 풀, 호출 차단 및 run_in_threadpool 👍 좋아요를 누르고 Nilesh Technology를 구독하고 다음 강의를 위해 벨을 누르세요! #FastAPI #Python #WebSockets #JWT #RealTime #FastAPITutorial #BackendDevelopment #PythonTutorial #NileshTechnology