93 lines
2.5 KiB
Markdown
93 lines
2.5 KiB
Markdown
# 변경 이력
|
|
|
|
## 2025-11-15
|
|
|
|
### 🐛 버그 수정: 실시간 접속자 수 문제 해결
|
|
|
|
**문제:**
|
|
- 여러 클라이언트가 연결되어도 "실시간 접속자 수"가 1에서 증가하지 않음
|
|
|
|
**원인:**
|
|
- WebSocket Hibernation API 사용 시, `this.sessions` Map이 hibernation 후 초기화됨
|
|
- `this.sessions.size`는 정확한 접속자 수를 반영하지 못함
|
|
|
|
**해결:**
|
|
- `this.ctx.getWebSockets().length`를 사용하여 실제 연결된 WebSocket 개수 확인
|
|
|
|
**변경된 파일:**
|
|
- `src/lib/counter-do.ts` - `broadcast()` 메서드 수정
|
|
|
|
**커밋:**
|
|
```
|
|
fix: 실시간 접속자 수가 정확하게 표시되도록 수정
|
|
|
|
- this.sessions.size 대신 this.ctx.getWebSockets().length 사용
|
|
- WebSocket Hibernation API와 호환되는 방식으로 변경
|
|
```
|
|
|
|
---
|
|
|
|
## 2025-11-14
|
|
|
|
### ✨ 초기 프로젝트 생성
|
|
|
|
**구현 사항:**
|
|
- ✅ SvelteKit 5 + Cloudflare Workers 프로젝트 설정
|
|
- ✅ Durable Objects 구현 (WebSocket Hibernation API)
|
|
- ✅ 실시간 카운터 UI (Tailwind CSS)
|
|
- ✅ WebSocket 양방향 통신
|
|
- ✅ 영구 저장소 연동 (Durable Objects Storage)
|
|
- ✅ Post-build 스크립트로 Worker 자동 패치
|
|
- ✅ 문서화 (README, QUICKSTART, DEPLOYMENT, PROJECT_STRUCTURE)
|
|
|
|
**주요 파일:**
|
|
- `src/lib/counter-do.ts` - Durable Object 클래스
|
|
- `src/routes/api/counter/+server.ts` - WebSocket API 엔드포인트
|
|
- `src/routes/+page.svelte` - 클라이언트 UI
|
|
- `scripts/patch-worker.js` - Worker 패치 스크립트
|
|
- `wrangler.jsonc` - Cloudflare Workers 설정
|
|
|
|
**기능:**
|
|
- 실시간 카운터 증가/리셋
|
|
- 실시간 접속자 수 표시
|
|
- 마지막 업데이트 시간 표시
|
|
- WebSocket 연결/연결 해제
|
|
- 모든 클라이언트 간 실시간 동기화
|
|
|
|
---
|
|
|
|
## 향후 계획
|
|
|
|
### 🚀 기능 추가 예정
|
|
|
|
- [ ] 여러 카운터 룸 (URL 파라미터 기반)
|
|
- [ ] 사용자 인증 (Cloudflare Access)
|
|
- [ ] 카운트 히스토리 (D1 SQLite 통합)
|
|
- [ ] 실시간 채팅 기능
|
|
- [ ] 관리자 대시보드
|
|
- [ ] 통계 및 분석
|
|
- [ ] 커스텀 테마
|
|
- [ ] 모바일 앱 (PWA)
|
|
|
|
### 🔧 개선 예정
|
|
|
|
- [ ] 자동 재연결 로직 강화
|
|
- [ ] 오프라인 모드 지원
|
|
- [ ] 성능 최적화
|
|
- [ ] 에러 핸들링 개선
|
|
- [ ] 테스트 코드 추가
|
|
- [ ] CI/CD 파이프라인 구축
|
|
|
|
---
|
|
|
|
## 기여 가이드
|
|
|
|
변경사항을 기록할 때:
|
|
|
|
1. 날짜별로 구분
|
|
2. 카테고리 사용: 🐛 버그수정, ✨ 새기능, 🔧 개선, 📚 문서
|
|
3. 변경 사유와 방법을 명확히 기술
|
|
4. 관련 파일 목록 포함
|
|
5. 커밋 메시지 예시 추가
|
|
|