PonsLink는 WebRTC 기술을 기반으로 구축된 차세대 실시간 P2P(Peer-to-Peer) 화상회의 및 파일 공유 플랫폼입니다. "The World is Your Neighbor. Link Freely."라는 비전 아래, 중앙 서버의 개입 없이 사용자 간 직접 연결을 통해 최소한의 지연시간과 최대한의 보안성을 실현합니다.
- 🔒 보안 우선: 중앙 서버를 거치지 않는 P2P 연결로 데이터 보안 극대화
- ⚡ 저지연: 직접 연결을 통한 실시간 통신
- 🎯 단순함: 복잡한 설정 없이 즉시 사용 가능
- 🌐 개방성: 오픈소스 기반의 투명한 개발
| 1:1 화상통화 | WebRTC 기반 실시간 화상통화 | ✅ 완료 |
|---|---|---|
| 화면 공유 | 화면 + 카메라 동시 공유 (PiP 지원) | ✅ 완료 |
| 자동 자막 | Web Speech API 기반 실시간 자막 생성 | ✅ 완료 |
| 실시간 번역 | MyMemory API 기반 자막 번역 (20개 언어) | ✅ 완료 |
| 채팅 | 텍스트 채팅 및 이모지 지원 | ✅ 완료 |
| 화이트보드 | 실시간 협업 드로잉 보드 | ✅ 완료 |
| 디바이스 전환 | 마이크/카메라 실시간 변경 | ✅ 완료 |
| 모바일 카메라 전환 | 전면/후면 카메라 전환 (모바일) | ✅ 완료 |
| 기능 | 설명 | 상태 |
|---|---|---|
| 대용량 파일 전송 | IndexedDB 기반 청크 전송 | ✅ 완료 |
| 전송 제어 | 일시정지/재개/취소 | ✅ 완료 |
| 전송 모니터링 | 실시간 속도/진행률/ETA 표시 | ✅ 완료 |
| ACK 기반 신뢰성 | 청크별 확인응답 시스템 | ✅ 완료 |
| 네트워크 적응 | 동적 윈도우 크기 조절 | ✅ 완료 |
| 기능 | 설명 | 상태 |
|---|---|---|
| 비디오 스트리밍 | Video.js 기반 실시간 재생 | ✅ 완료 |
| 자막 동기화 | VTT/SRT 자막 실시간 동기화 | ✅ 완료 |
| PDF 스트리밍 | PDF.js 기반 문서 공유 | ✅ 완료 |
| 이미지 스트리밍 | 고해상도 이미지 공유 | ✅ 완료 |
| iOS 최적화 | MediaRecorder API 활용 | ✅ 완료 |
| 미니 플레이어 | 드래그 가능한 플로팅 플레이어 | ✅ 완료 |
| OS | 지원 버전 | 상태 | 비고 |
|---|---|---|---|
| Windows | 10, 11 | ✅ 완전 지원 | 모든 기능 동작 |
| macOS | 12+ (Monterey 이상) | ✅ 완전 지원 | Intel/Apple Silicon 모두 지원 |
| Linux | Ubuntu 20.04+, Debian 11+ | ✅ 완전 지원 | 주요 배포판 테스트 완료 |
| iOS | 14.3+ | ✅ 최적화 완료 | MediaRecorder API 활용 |
| Android | 9+ | ✅ 완전 지원 | Chrome 기반 브라우저 권장 |
| 브라우저 | 데스크톱 | 모바일 | WebRTC | 파일공유 | 스트리밍 |
|---|---|---|---|---|---|
| Chrome | 90+ ✅ | 90+ ✅ | ✅ | ✅ | ✅ |
| Edge | 90+ ✅ | 90+ ✅ | ✅ | ✅ | ✅ |
| Firefox | 88+ ✅ | 88+ ✅ | ✅ | ✅ | ✅ |
| Safari | 14+ ✅ | 14.3+ ✅ | ✅ | ✅ | |
| Opera | 76+ ✅ | - | ✅ | ✅ | ✅ |
*Safari 제한사항: iOS Safari는 MediaRecorder API 지원으로 최적화되었으나, 일부 코덱 제약이 있을 수 있습니다.
| 디바이스 타입 | 화상회의 | 파일공유 | 스트리밍 | 화면공유 | 카메라 전환 |
|---|---|---|---|---|---|
| 데스크톱 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 노트북 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 스마트폰 | ✅ | ✅ | ✅ | ✅ | |
| 태블릿 | ✅ | ✅ | ✅ | ✅ |
*모바일 화면공유: iOS는 iOS 15+, Android는 Android 10+에서 지원됩니다.
| 기능 | 최소 대역폭 | 권장 대역폭 | 비고 |
|---|---|---|---|
| 음성 통화 | 50 Kbps | 100 Kbps | Opus 코덱 |
| 720p 비디오 | 1 Mbps | 2 Mbps | VP8/H.264 |
| 1080p 비디오 | 2 Mbps | 4 Mbps | VP9/H.264 |
| 화면 공유 | 1 Mbps | 3 Mbps | 해상도 의존 |
| 파일 전송 | 500 Kbps | 제한 없음 | 속도에 따라 가변 |
- Node.js 18.0 이상
- npm 또는 yarn
- Git
# 저장소 클론
git clone https://github.com/yourusername/ponslink.git
cd ponslink
# 의존성 설치
npm install
# 환경 변수 설정
cp .env.example .env
# .env 파일을 편집하여 시그널링 서버 URL 설정
# 개발 서버 시작
npm run dev지원 용량
- ✅ 최대 파일 크기: 100GB (이론적 제한 없음)
- ✅ 동시 전송: 제한 없음
- ✅ 전송 속도: 네트워크 대역폭에 의존 (일반적으로 10-50 MB/s)
주요 특징
-
청크 기반 전송
- 파일을 16-64KB 청크로 분할하여 전송
- iOS 최적화: 16KB 청크 사용
- 데스크톱: 64KB 청크 사용
-
신뢰성 보장
- ACK(확인응답) 기반 전송
- 타임아웃 재전송 (3-5회 재시도)
- 네트워크 품질에 따른 동적 윈도우 크기 조절
-
전송 제어
- 일시정지/재개 기능
- 취소 및 재전송
- 실시간 진행률 모니터링
-
성능 최적화
- Web Worker를 통한 백그라운드 처리
- IndexedDB를 활용한 청크 저장
- 메모리 효율적인 스트리밍
지원 파일 형식
- ✅ 비디오: MP4, WebM, OGG (H.264, VP8, VP9 코덱)
- ✅ 문서: PDF
용량 제한
- ✅ 비디오 스트리밍: 용량 제한 없음 (네트워크 대역폭에 의존)
- ✅ PDF 스트리밍: 용량 제한 없음 (페이지별 렌더링)
주요 특징
-
비디오 스트리밍
- Video.js 기반 플레이어
- 자막 동기화 (VTT/SRT)
- 재생 속도 조절 (0.5x - 2x)
- 화질 선택 (480p, 720p, 1080p)
- 풀스크린 지원
-
자막 기능
- 실시간 동기화 (±10초 조절)
- 다중 자막 트랙 지원
- 스타일 커스터마이징
- 자막 검색 기능
-
PDF 스트리밍
- PDF.js 기반 렌더링
- 페이지별 동기화
- 확대/축소/회전
- 썸네일 네비게이션
-
iOS 최적화
- MediaRecorder API 활용
- H.264 코덱 우선 사용
- 저전력 모드 대응
- 네트워크 적응형 스트리밍
실제 사용 시나리오
-
원격 교육
- 강의 비디오 실시간 공유
- PDF 교재 페이지 동기화
-
업무 협업
- 프레젠테이션 공유
- 문서 리뷰 및 주석
-
원격 지원
- 기술 문서 공유
- 화면 공유를 통한 실시간 가이드
- 파일 전송 및 다운로드
-
보안 공유
- 실제 자원을 공유하지 않으면서 화면만 공유
- 이메일: ponslink@gmail.com
이 프로젝트는 MIT 라이선스 하에 배포됩니다.
PonsLink는 오픈소스 프로젝트이며, 여러분의 기여를 환영합니다!
- 이슈 제출: 버그 리포트나 기능 제안
- 코드 기여: Pull Request 제출
- 문서 개선: README, Wiki 업데이트
- 번역 지원: 다국어 지원 확대
PonsLink는 다음 오픈소스 프로젝트들의 도움을 받았습니다:
- WebRTC: 실시간 통신 기술
- Socket.IO: 시그널링 서버
- Video.js: 비디오 플레이어
- PDF.js: PDF 렌더링
- Zustand: 상태 관리
- React: UI 프레임워크