클라이언트 입력을 절대 믿지 마
들어오는 모든 WebSocket 메시지는 검증하기 전까지 적대적인 입력이야. 봉투 구조, type, 모든 필드와 길이를 검사해. Pydantic 을 쓰면 스키마로 구조화된 검증을 하고 오류는 {type: 'error', code: 'validation_error', message: ...} 형태로 돌려줄 수 있어.
Literal 로 만드는 태그드 유니언
메시지 type 마다 Pydantic 모델을 정의하고 Field(discriminator='type') 로 나눠. 프레임워크가 type 필드에 따라 알맞은 모델을 고르고 나머지를 검증한 뒤 자료형이 정해진 객체를 돌려줘. 잘못된 메시지는 처리기가 실행되기 전에 거절돼.