refactor: Update demo to use RondevuPeer with state management

- Replace RondevuConnection with RondevuPeer throughout
- Add state event listener for better state tracking
- Add failed event listener with error details
- Configure timeouts for offer/answer operations
- Enhanced ICE debugging with candidate pair tracking
- Add connection failure detection and logging
- Improved error handling and user feedback
- Update version to v0.5.0 (State-Based Peer Manager)
- Update TURN server configuration to ronde.vu
- Add comprehensive logging for troubleshooting

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-16 16:37:28 +01:00
parent 217b84701f
commit 50eeec5164
2 changed files with 224 additions and 56 deletions

66
CLAUDE.md Normal file
View File

@@ -0,0 +1,66 @@
# Rondevu Demo Development Guidelines
## WebRTC Configuration
### TURN Server Setup
When configuring TURN servers:
-**DO** include the port number in TURN URLs: `turn:server.com:3478`
-**DO** test TURN connectivity before deploying: `turnutils_uclient -u user -w pass server.com 3478 -y`
-**DO** provide both TCP and UDP transports for maximum compatibility
-**DON'T** omit the port number (even if it's the default 3478)
-**DON'T** assume TURN works without testing
### ICE Configuration
**Force Relay Mode for Testing:**
```javascript
const RTC_CONFIG = {
iceServers: [...],
iceTransportPolicy: 'relay' // Forces TURN relay, bypasses NAT issues
};
```
Use `iceTransportPolicy: 'relay'` to:
- Test if TURN server is working correctly
- Bypass NAT hairpinning issues (when both peers are on same network)
- Ensure maximum compatibility
**Remove or comment out** `iceTransportPolicy: 'relay'` for production to allow direct connections when possible.
## Debugging
### Enable Detailed ICE Logging
The demo includes detailed ICE candidate logging. Check browser console for:
- 🧊 ICE candidate gathering
- 🧊 ICE connection state changes
- 📤 Candidates sent to server
- 📥 Candidates received from server
- ✅ Successful candidate pairs
- ❌ Failed candidate pairs
### Common Issues
1. **Connection stuck in "connecting":**
- Enable relay-only mode to test TURN
- Check if both peers are behind same NAT (hairpinning issue)
- Verify TURN credentials are correct
2. **No candidates gathered:**
- Check STUN/TURN server URLs
- Verify firewall isn't blocking UDP ports
- Check TURN server is running
3. **Candidates gathered but connection fails:**
- Check if TURN relay is actually working (use `turnutils_uclient`)
- Verify server is filtering candidates by role correctly
- Enable detailed logging to see which candidate pairs are failing
## UI Guidelines
- Show clear connection status (waiting, connecting, connected, failed)
- Display peer role (offerer vs answerer) for debugging
- Provide visual feedback for all user actions
- Use toast notifications for errors and success messages