From fc39d5beadf16a14785736ade7fed354d9767eb9 Mon Sep 17 00:00:00 2001 From: Sergiu Toma Date: Mon, 3 Mar 2025 22:30:41 +0200 Subject: [PATCH] LINXD-2842: Log message when protocol is changed --- app.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/app.js b/app.js index f9e5b00..559018d 100644 --- a/app.js +++ b/app.js @@ -12,6 +12,10 @@ try { console.log('https support is disabled!'); } const mediasoup = require('mediasoup'); +const isUdpEnabled = process.env.ENABLE_UDP === 'true'; +const isTcpEnabled = process.env.ENABLE_TCP === 'true'; +const isUdpPreferred = process.env.PREFER_UDP === 'true'; +let initialConnection = isUdpPreferred ? 'udp' : 'tcp'; let worker; /** @@ -555,14 +559,25 @@ const createWebRtcTransportLayer = async (callId, callback) => { announcedIp: process.env.ANNOUNCED_IP, // Announced IPv4 or IPv6 (useful when running mediasoup behind NAT with private IP). }, ], - enableUdp: process.env.ENABLE_UDP === 'true', - enableTcp: process.env.ENABLE_TCP === 'true', - preferUdp: process.env.PREFER_UDP === 'true', + enableUdp: isUdpEnabled, + enableTcp: isTcpEnabled, + preferUdp: isUdpPreferred, }; // https://mediasoup.org/documentation/v3/mediasoup/api/#router-createWebRtcTransport let transport = await videoCalls[callId].router.createWebRtcTransport(webRtcTransport_options); + transport.on('iceselectedtuplechange', (selectedTuple) => { + const { protocol } = selectedTuple; + const switchedTo = protocol === 'udp' ? 'tcp' : 'udp'; + + if (initialConnection !== protocol) { + console.warn(`⚠️ ${protocol.toUpperCase()} blocked! Switching to ${switchedTo.toUpperCase()} for callId: ${callId}`); + initialConnection = protocol; + } + }); + + // Handler for when DTLS(Datagram Transport Layer Security) changes transport.on('dtlsstatechange', (dtlsState) => { console.log(`transport | dtlsstatechange | calldId ${callId} | dtlsState ${dtlsState}`);