mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 09:10:30 +08:00
improved janus error handling
This commit is contained in:
parent
decdb80c2d
commit
f6db91b6d3
@ -39,7 +39,8 @@ function _JanusStreamer(__setActive, __setInactive, __setInfo) {
|
|||||||
var __janus = null;
|
var __janus = null;
|
||||||
var __handle = null;
|
var __handle = null;
|
||||||
|
|
||||||
var __retry_timeout = null;
|
var __retry_ensure_timeout = null;
|
||||||
|
var __retry_emsg_timeout = null;
|
||||||
var __info_interval = null;
|
var __info_interval = null;
|
||||||
|
|
||||||
var __state = null;
|
var __state = null;
|
||||||
@ -86,19 +87,20 @@ function _JanusStreamer(__setActive, __setInactive, __setInfo) {
|
|||||||
|
|
||||||
var __finishJanus = function() {
|
var __finishJanus = function() {
|
||||||
if (__stop) {
|
if (__stop) {
|
||||||
if (__retry_timeout !== null) {
|
if (__retry_ensure_timeout !== null) {
|
||||||
clearTimeout(__retry_timeout);
|
clearTimeout(__retry_ensure_timeout);
|
||||||
__retry_timeout = null;
|
__retry_ensure_timeout = null;
|
||||||
}
|
}
|
||||||
__ensuring = false;
|
__ensuring = false;
|
||||||
} else {
|
} else {
|
||||||
if (__retry_timeout === null) {
|
if (__retry_ensure_timeout === null) {
|
||||||
__retry_timeout = setTimeout(function() {
|
__retry_ensure_timeout = setTimeout(function() {
|
||||||
__retry_timeout = null;
|
__retry_ensure_timeout = null;
|
||||||
__ensureJanus(true);
|
__ensureJanus(true);
|
||||||
}, 5000);
|
}, 5000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
__stopRetryEmsgInterval();
|
||||||
__stopInfoInterval();
|
__stopInfoInterval();
|
||||||
__handle = null;
|
__handle = null;
|
||||||
__janus = null;
|
__janus = null;
|
||||||
@ -109,6 +111,14 @@ function _JanusStreamer(__setActive, __setInactive, __setInfo) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
var __destroyJanus = function() {
|
var __destroyJanus = function() {
|
||||||
|
if (__handle.webrtcStuff.remoteStream !== null) {
|
||||||
|
for (let track of __handle.webrtcStuff.remoteStream.getTracks()) {
|
||||||
|
track.stop();
|
||||||
|
__handle.webrtcStuff.remoteStream.removeTrack(track);
|
||||||
|
}
|
||||||
|
__handle.webrtcStuff.remoteStream = null;
|
||||||
|
}
|
||||||
|
$("stream-video").srcObject = null;
|
||||||
if (__janus !== null) {
|
if (__janus !== null) {
|
||||||
__janus.destroy();
|
__janus.destroy();
|
||||||
}
|
}
|
||||||
@ -121,7 +131,7 @@ function _JanusStreamer(__setActive, __setInactive, __setInfo) {
|
|||||||
}
|
}
|
||||||
__janus.attach({
|
__janus.attach({
|
||||||
plugin: "janus.plugin.ustreamer",
|
plugin: "janus.plugin.ustreamer",
|
||||||
oid: "oid-" + _Janus.randomString(12),
|
opaqueId: "oid-" + _Janus.randomString(12),
|
||||||
|
|
||||||
success: function(handle) {
|
success: function(handle) {
|
||||||
__handle = handle;
|
__handle = handle;
|
||||||
@ -149,8 +159,10 @@ function _JanusStreamer(__setActive, __setInactive, __setInfo) {
|
|||||||
},
|
},
|
||||||
|
|
||||||
onmessage: function(msg, jsep) {
|
onmessage: function(msg, jsep) {
|
||||||
|
__stopRetryEmsgInterval();
|
||||||
|
|
||||||
if (msg.result) {
|
if (msg.result) {
|
||||||
__logInfo("Got Janus message:", msg.result.status); // starting, started, stopped
|
__logInfo("Got uStreamer result message:", msg.result.status); // starting, started, stopped
|
||||||
if (msg.result.status === "started") {
|
if (msg.result.status === "started") {
|
||||||
__setActive();
|
__setActive();
|
||||||
__setInfo(false, false, "");
|
__setInfo(false, false, "");
|
||||||
@ -158,14 +170,21 @@ function _JanusStreamer(__setActive, __setInactive, __setInfo) {
|
|||||||
__setInactive();
|
__setInactive();
|
||||||
__setInfo(false, false, "");
|
__setInfo(false, false, "");
|
||||||
}
|
}
|
||||||
} else if (msg.error) {
|
} else if (msg.error_code || msg.error) {
|
||||||
__logError("Got janus error:", msg.error);
|
__logError("Got uStreamer error message:", msg.error_code, "-", msg.error);
|
||||||
__sendStop();
|
__setInfo(false, false, (msg.error_code === 503 ? "Waiting for keyframe ..." : msg.error));
|
||||||
__sendWatch();
|
if (__retry_emsg_timeout === null) {
|
||||||
__setInfo(false, false, msg.error);
|
__retry_emsg_timeout = setTimeout(function() {
|
||||||
|
if (!__stop) {
|
||||||
|
__sendStop();
|
||||||
|
__sendWatch();
|
||||||
|
}
|
||||||
|
__retry_emsg_timeout = null;
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
__logInfo("Got Janus message:", msg);
|
__logInfo("Got uStreamer other message:", msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (jsep) {
|
if (jsep) {
|
||||||
@ -181,6 +200,7 @@ function _JanusStreamer(__setActive, __setInactive, __setInfo) {
|
|||||||
|
|
||||||
error: function(error) {
|
error: function(error) {
|
||||||
__logInfo("Error on SDP handling:", error);
|
__logInfo("Error on SDP handling:", error);
|
||||||
|
__setInfo(false, false, error);
|
||||||
//__destroyJanus();
|
//__destroyJanus();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@ -214,6 +234,13 @@ function _JanusStreamer(__setActive, __setInactive, __setInfo) {
|
|||||||
__info_interval = null;
|
__info_interval = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var __stopRetryEmsgInterval = function() {
|
||||||
|
if (__retry_emsg_timeout !== null) {
|
||||||
|
clearTimeout(__retry_emsg_timeout);
|
||||||
|
__retry_emsg_timeout = null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
var __updateInfo = function() {
|
var __updateInfo = function() {
|
||||||
if (__handle !== null) {
|
if (__handle !== null) {
|
||||||
let online = !!(__state && __state.source && __state.source.online);
|
let online = !!(__state && __state.source && __state.source.online);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user