Files
chanora/docs/references/web-client-feasibility.md
T
Edison Jwa c4b8732bd7 docs: add upstream PR draft, benchmarks, web client assessment (TODO-057,072,073)
p256 PR draft ready for ReSpeak/tsclientlib submission.
Performance benchmarks document with tsclientlib baselines and
Chanora current metrics. Web client assessed as infeasible without
UDP proxy infrastructure.
2026-06-11 20:55:20 +09:00

69 lines
2.4 KiB
Markdown

# Web Client Feasibility Assessment
**Date:** 2026-06-11
**Purpose:** Brief assessment of web client feasibility for Chanora (TODO-073)
---
## Precedent: TeaSpeak Web Client
TeaSpeak built a web client (TypeScript, MPL-2.0) that demonstrated:
- Browser-based TeamSpeak-compatible voice is technically feasible
- WebAudio API handles Opus decode/encode via WebAssembly
- Installation-less access is a compelling user benefit
- VP8 video/screen sharing worked (with bugs)
**Status:** Archived July 2025, unmaintained since ~2022.
---
## Technical Requirements
| Component | Browser API | Feasibility |
|---|---|---|
| Audio capture | `getUserMedia()` + `MediaStream` | ✅ Well-supported |
| Opus encode/decode | WebAssembly (libopus) | ✅ ~100µs encode, feasible |
| UDP transport | Not available in browsers | ❌ **Blocker** |
| WebSocket fallback | `WebSocket` | ⚠️ Requires proxy/gateway |
| TLS/WebRTC | `RTCPeerConnection` | ⚠️ Possible but complex |
| File transfer | `File` API + WebSocket | ✅ Feasible |
---
## Key Challenge: Transport
TS3 protocol uses **raw UDP** with custom encryption (EAX mode). Browsers cannot send raw UDP packets.
### Options
1. **WebSocket proxy** — Server-side gateway translates WebSocket↔UDP
- Requires infrastructure (not self-hosted friendly)
- Adds latency (~10-50ms per hop)
- Breaks end-to-end encryption
2. **WebRTC data channel** — Browser-to-browser UDP-like channel
- Requires signaling server
- NAT traversal complexity
- Not compatible with TS3 server protocol
3. **WASM + raw sockets** — Not possible (browser sandbox)
---
## Verdict
**Not feasible in current scope.** The UDP transport requirement is a hard blocker without a proxy gateway. Chanora's value proposition (native cross-platform client) conflicts with the infrastructure requirements of a web client.
### If pursued in future
- Build a lightweight WebSocket↔UDP gateway (Rust, ~500 lines)
- Reuse `chanora_protocol` for server-side translation
- Host gateway alongside TS3 server or as optional service
- Web client would be a thin UI layer over the gateway
---
## Recommendation
**Defer indefinitely.** Focus on native client quality. A web client adds significant infrastructure complexity for marginal benefit. TeaSpeak's web client was compelling but ultimately abandoned — the maintenance cost is high relative to native clients.