← 목록
기타 2026-05-22 4KB 읽기 4분

크라우니메신저 v3 — Phase 7 실사용 마무리

개요

Phase 6에서 모든 기능을 라이브 시스템에 연결한 뒤, Phase 7에서 미디어 전송·종단간 검증·푸시 알림을 완성해 실사용 준비를 마쳤다.

작업 내용

1. 미디어 업로드/다운로드 (ws-server-v3.js + 미디어관리.한선)

음성·사진·파일이 실제로 전송되도록 HTTP 엔드포인트 7개 추가:

엔드포인트기능
POST /upload/voice음성 업로드 (audio/webm 등 5종, 10MB)
POST /upload/media사진/영상 업로드 (25MB) + 썸네일
POST /upload/file일반 파일 (100MB)
GET /voice/{id}Range 스트리밍 (206 Partial)
GET /media/{id}미디어 서빙
GET /thumbs/{id}썸네일 서빙
GET /files/{id}파일 다운로드
  • multipart/form-data 파서 자체 구현 (외부 라이브러리 0)
  • MIME 검증 (octet-stream 거부 확인), 크기 제한
  • 미디어관리.한선 +4 함수 (업로드처리/URL생성/유효성/썸네일경로)
  • 검증: 음성 업로드 → {id,url,size,mime} 반환 → 다운로드 HTTP 200 ✓

2. 종단간(E2E) 테스트 (e2e-test.js + E2E검증.한선)

  • raw TCP + RFC 6455 WebSocket 핸드셰이크 직접 구현 (Node net/crypto만)
  • Node 25 네이티브 WebSocket 호환 이슈 우회
  • SHA1 Accept 검증, 마스킹 프레임 인코딩/디코딩
  • 15개 메시지 타입 라이브 서버 대상 테스트 → 15/15 통과
PASS PING·AUTH·MSG·GROUP_CREATE·POLL·LOCATION·IDENTITY
PASS PROFILE_UPDATE·WALLET_LINK·WALLET_SEND·I18N
PASS STATUS_SET·INVITE_CREATE·VOICE_MSG·PAIR_START
결과: 15/15 통과

  • E2E검증.한선 — CMP v3 검증 스펙 한선씨 정본 (253줄)

3. VAPID 웹 푸시 서버 (ws-server-v3.js + 푸시알림.한선)

오프라인 사용자 브라우저 알림 (FCM/APNs 의존 0):
  • P-256 VAPID 키쌍 생성/저장 (vapid.json)
  • ES256 VAPID JWT 서명 (IEEE P1363 64바이트)
  • sendPush(userId, payload) — 사용자 전체 구독 병렬 발송, 410/404 자동 정리
  • 오프라인 메시지 수신 시 자동 푸시 트리거
엔드포인트기능
GET /push/vapid-public공개키 (87자 base64url)
POST /push/subscribe구독 등록
POST /push/unsubscribe구독 해제
POST /push/test수동 테스트 발송
  • 푸시알림.한선 +7 함수
  • aes128gcm 페이로드 암호화(RFC 8291)는 TODO (VAPID JWT는 완성)

검증

항목결과
한선씨 컴파일51/51 (100%)
JS 서버 node -cPASS (2,741줄)
e2e-test.js node -cPASS
E2E 라이브 테스트15/15 통과
미디어 업로드/다운로드정상 (HTTP 200)
VAPID 공개키HTTP 200
서버 재시작정상

최종 통계

항목수치
한선씨 파일51개, 22,189줄
JS 서버2,741줄
Web UI2,989줄
E2E 테스트e2e-test.js + E2E검증.한선
서버v3.0.0 가동중, talk.crowny.org

발견·수정

  • E2E검증.한선 배열생성() → 한선씨는 배열 리터럴 [] 사용. 수정 후 컴파일 통과
  • 미디어 업로드 MIME 검증이 octet-stream을 정상 거부 — 명시적 type 지정 필요

잔여 작업

  • Web Push aes128gcm 페이로드 암호화 (RFC 8291)
  • 썸네일 실제 이미지 리사이징 (현재 원본 복사)
  • 지갑 _뱅크송금 → bank.crowny.org:9400 실 API
  • 실 Ed25519 (JS WebCrypto)

관련 파일

  • JS 서버: /Users/ef/CrownyOS/apps/메신저/v3/서버/ws-server-v3.js
  • E2E 테스트: 서버/e2e-test.js, E2E검증.한선
  • 미디어/푸시: 미디어관리.한선, 푸시알림.한선
  • 이전 단계: 2026-05-22-crowny-messenger-v3-phase6.md