피드로 돌아가기
Real-time chat with Fitz: typed WebSockets and AsyncAPI auto-generated
Dev.toDev.to
Backend

추가 라이브러리 없이 40줄의 코드로 구현한 Type-safe 실시간 대시보드

Real-time chat with Fitz: typed WebSockets and AsyncAPI auto-generated

Martin Palopoli2026년 6월 17일10intermediate

Context

기존 Request-Response 기반의 URL Shortener 구조로 인해 통계 업데이트를 위한 Polling 필요성 발생. 실시간성 확보를 위한 WebSocket 도입이 필요하나, 일반적인 구현 시 Boilerplate 코드 증가와 타입 불일치 위험이 존재하는 상황.

Technical Solution

  • @ws 데코레이터를 통한 WebSocket 엔드포인트의 선언적 등록 및 런타임 관리
  • WsConn<T> 제네릭 타입을 활용하여 송수신 프레임의 Auto-marshalling 및 컴파일 타임 타입 검증 구현
  • @authenticated 가드를 WebSocket Upgrade 단계에 배치하여 불필요한 네트워크 리소스 낭비 방지
  • ws.broadcast 핸들을 통한 특정 엔드포인트 구독자 전원 대상의 Fire-and-forget 메시지 전송 구조 설계
  • 서버 설정의 ws_heartbeat_secs 옵션을 통한 자동 Ping/Pong 메커니즘으로 Proxy 연결 끊김 문제 해결
  • AsyncAPI 3.0 스키마 자동 생성으로 프론트엔드 TypeScript 타입과의 정렬 보장

1. WebSocket 도입 시 연결 유지(Heartbeat) 전략이 인프라 환경(Nginx, Cloudflare 등)과 호환되는지 확인

2. 인증 로직을 Upgrade 단계 이전에 배치하여 유효하지 않은 연결의 조기 차단 검토

3. API 스키마 자동 생성 도구를 활용해 백엔드-프론트엔드 간의 타입 동기화 비용 최소화

원문 읽기
Real-time chat with Fitz: typed WebSockets and AsyncAPI auto-generated | Devpick