Path param 은 REST 처럼
FastAPI 의 path parameter 가 WebSocket endpoint 에서도 똑같이 동작. @app.websocket('/ws/{room_id}') 가 room_id: str 인자 줘. 자동 변환 위해 type-hint: room_id: int, user_id: UUID.
websocket.query_params 로 query param
브라우저 WebSocket constructor 에서 custom HTTP 헤더 못 박음 (Track 2). 그래서 query string 이 auth token, room name 등 handshake data 운반. websocket.query_params — string 의 dict-like mapping — 으로 읽어.
accept() 전에 validate
auth 와 reject 는 항상 accept() 전에. handshake 중 close 는 비용 0; accept 후 close 는 클라가 잠깐 'open' socket 본 다음 kick 보는 거 — 헷갈리는 UX 와 클라에서 mishandling 쉬움.