WebSocket 은 전송 순서를 보장해
연결 하나 안에서는 WebSocket 프레임이 보낸 순서대로 도착해. TCP 의 보장이 위 계층까지 이어지는 거야. 순서 뒤바뀜은 없지만 프로토콜 수준의 중복 제거도 없어. 재연결하면 이 보장은 초기화되고 새 연결은 완전히 독립적이야.
프레임 크기의 한계
프로토콜은 이론상 2^63바이트에 이르는 거대한 프레임을 허용하지만 실제 구현은 모두 상한을 둬. 운영 기본값은 대개 64KB~1MB 야. 더 큰 페이로드는 메타데이터가 있는 file.start, 바이너리 조각 흐름, file.end 처럼 명시적으로 나눠 보내. 논리적 메시지 하나가 프레임 하나라고 가정하면 안 돼.
애플리케이션 수준의 ACK
채팅 메시지나 결제 확인처럼 메시지가 반드시 전달되어야 한다면 애플리케이션 계층에서 ACK 를 만들어. 클라이언트가 순번과 함께 보내고 서버가 같은 순번의 ack 로 응답하며, 확인이 오지 않으면 클라이언트가 다시 보내는 방식이야. WebSocket 연결 자체와 독립적으로 설계하면 재연결도 견딜 수 있어.
AsyncAPI 로 문서화하기
AsyncAPI 는 사건 중심 메시지 API 를 위한 OpenAPI 와 같아. 채널, 작업, 메시지 스키마를 YAML 로 정의하고 문서, 모의 서버, 클라이언트 코드를 만들 수 있어. 메시지 type 이 몇 개를 넘어가면 충분히 가치가 있어.