mirror of
https://github.com/xtr-dev/rondevu-demo.git
synced 2025-12-09 18:33:23 +00:00
Updated ICE configuration to use TURNS (TLS/DTLS) on port 5349 as the preferred relay method, with plain TURN on port 3478 as fallback. WebRTC will try secure endpoints first for better security and reliability. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
92 lines
2.9 KiB
Markdown
92 lines
2.9 KiB
Markdown
# Rondevu Demo Development Guidelines
|
|
|
|
## WebRTC Configuration
|
|
|
|
### TURN Server Setup
|
|
|
|
When configuring TURN servers:
|
|
|
|
- ✅ **DO** use TURNS (secure) on port 5349 when available: `turns:server.com:5349`
|
|
- ✅ **DO** include TURN fallback on port 3478: `turn:server.com:3478`
|
|
- ✅ **DO** include the port number in TURN URLs (even if default)
|
|
- ✅ **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
|
|
- ❌ **DON'T** assume TURN works without testing
|
|
|
|
**Current Configuration:**
|
|
```javascript
|
|
const RTC_CONFIG = {
|
|
iceServers: [
|
|
{ urls: ["stun:stun.share.fish:3478"] },
|
|
{
|
|
urls: [
|
|
// TURNS (secure) - TLS/DTLS on port 5349 (preferred)
|
|
"turns:turn.share.fish:5349?transport=tcp",
|
|
"turns:turn.share.fish:5349?transport=udp",
|
|
// TURN (fallback) - plain on port 3478
|
|
"turn:turn.share.fish:3478?transport=tcp",
|
|
"turn:turn.share.fish:3478?transport=udp",
|
|
],
|
|
username: "webrtcuser",
|
|
credential: "supersecretpassword"
|
|
}
|
|
]
|
|
};
|
|
```
|
|
|
|
WebRTC will try TURNS (secure) endpoints first, falling back to plain TURN if needed.
|
|
|
|
### 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
|