Issue #161: Fixed periodic disconnections on bad network

Fix for Janus 1.x similar as for 0.x (see 6b0f94c78d957359e695e231800d1ddade7706e0)
This commit is contained in:
Maxim Devaev 2024-03-23 13:11:34 +02:00
parent 852931bb82
commit 90838fde59

View File

@ -227,14 +227,18 @@ export function JanusStreamer(__setActive, __setInactive, __setInfo, __orient, _
}, },
// Janus 1.x // Janus 1.x
"onremotetrack": function(changed_track, id, added) { "onremotetrack": function(changed_track, id, added, meta) {
__logInfo("Got onremotetrack:", changed_track, id, added); __logInfo("Got onremotetrack:", changed_track, id, added, meta);
let el = $("stream-video"); let el = $("stream-video");
if (!el.srcObject) { if (!el.srcObject) {
el.srcObject = new MediaStream(); el.srcObject = new MediaStream();
} }
let stream = el.srcObject; let stream = el.srcObject;
if (added) { // Chrome sends `muted` notifiation for tracks in `disconnected` ICE state
// and Janus.js just removes muted track from list of available tracks.
// But track still exists actually so it's safe to just ignore
// reason == "mute" and "unmute".
if (added && meta.reason == "created") {
for (let track of stream.getTracks()) { for (let track of stream.getTracks()) {
if (track.kind === changed_track.kind && track.id !== changed_track.id) { if (track.kind === changed_track.kind && track.id !== changed_track.id) {
stream.removeTrack(track); stream.removeTrack(track);
@ -245,7 +249,7 @@ export function JanusStreamer(__setActive, __setInactive, __setInfo, __orient, _
__sendKeyRequired(); __sendKeyRequired();
__startInfoInterval(); __startInfoInterval();
} }
} else { } else if (!added && meta.reason == "ended") {
stream.removeTrack(changed_track); stream.removeTrack(changed_track);
} }
}, },