Иной подход к звонкам

This commit is contained in:
Халимов Рустам
2026-03-11 15:18:35 +03:00
parent 9d2d7efbf1
commit 18f39ecea8
4 changed files with 5 additions and 51 deletions
+1 -5
View File
@@ -30,11 +30,7 @@ export const config = {
minPasswordLength: 8,
/** Maximum registrations allowed from the same IP (permanent, DB-level) */
maxRegistrationsPerIp: Number(process.env.MAX_REGISTRATIONS_PER_IP) || 2,
/** TURN server URL for WebRTC calls (e.g. turn:your-domain.com:3478) */
turnUrl: process.env.TURN_URL || '',
/** Shared secret for TURN server (coturn static-auth-secret) */
turnSecret: process.env.TURN_SECRET || '',
/** STUN server URLs */
stunUrls: (process.env.STUN_URLS || 'stun:stun.l.google.com:19302,stun:stun1.l.google.com:19302')
stunUrls: (process.env.STUN_URLS || 'stun:stun.yandex.ru:3478,stun:stun.sipnet.net:3478,stun:stun.l.google.com:19302,stun:stun.voip.aebc.com:3478,stun:stun.stunprotocol.org:3478')
.split(',').map(s => s.trim()).filter(Boolean),
};
-17
View File
@@ -124,23 +124,6 @@ app.get('/api/ice-servers', authenticateToken, (_req: AuthRequest, res) => {
iceServers.push({ urls: config.stunUrls });
}
// TURN сервер с временными credentials (coturn --use-auth-secret)
if (config.turnUrl && config.turnSecret) {
const ttl = 24 * 3600; // 24 часа
const timestamp = Math.floor(Date.now() / 1000) + ttl;
const username = `${timestamp}:vortex`;
const credential = crypto
.createHmac('sha1', config.turnSecret)
.update(username)
.digest('base64');
iceServers.push({
urls: config.turnUrl,
username,
credential,
});
}
res.json({ iceServers });
});
+3 -5
View File
@@ -21,18 +21,16 @@ interface CallModalProps {
} | null;
}
// ICE servers cache (fetched from server, includes TURN credentials when configured)
// ICE servers cache (fetched from server)
let cachedIceConfig: RTCConfiguration | null = null;
let iceCacheFetchedAt = 0;
const ICE_CACHE_TTL = 3600_000; // 1 hour
const FALLBACK_ICE: RTCConfiguration = {
iceServers: [
{ urls: 'stun:stun.yandex.ru:3478' },
{ urls: 'stun:stun.sipnet.net:3478' },
{ urls: 'stun:stun.l.google.com:19302' },
{ urls: 'stun:stun1.l.google.com:19302' },
{ urls: 'stun:stun2.l.google.com:19302' },
{ urls: 'stun:stun3.l.google.com:19302' },
{ urls: 'stun:stun4.l.google.com:19302' },
],
};