import "./libs/request.min.js";
|
import "./janusvideoroom.js";
|
import "./libs/EventEmitter.min.js";
|
|
class WebRTCStreamerJanusElement extends HTMLElement {
|
static get observedAttributes() {
|
return ['videostream','audiostream','options', 'webrtcurl'];
|
}
|
|
constructor() {
|
super();
|
this.shadowDOM = this.attachShadow({mode: 'open'});
|
this.shadowDOM.innerHTML = `
|
<style>@import "styles.css"</style>
|
<body></body>
|
`;
|
}
|
connectedCallback() {
|
this.connectStream();
|
}
|
disconnectedCallback() {
|
this.disconnectStream();
|
}
|
attributeChangedCallback(attrName, oldVal, newVal) {
|
this.connectStream();
|
}
|
|
writeStatus(name, status) {
|
var textNode = this.shadowDOM.createElement("h3");
|
textNode.innerHTML = name + " " + status;
|
this.shadowDOM.body.appendChild(textNode);
|
}
|
|
disconnectStream() {
|
if (this.janus) {
|
this.janus.leave();
|
this.janus = null;
|
}
|
}
|
connectStream() {
|
this.disconnectStream();
|
|
let webrtcurl = this.getAttribute("webrtcurl") || webrtcConfig.url;
|
let videostream = this.getAttribute("videostream") || webrtcConfig.defaultvideostream;
|
let audiostream = this.getAttribute("audiostream") || webrtcConfig.defaultaudiostream;
|
let options = this.getAttribute("options") || webrtcConfig.options;
|
|
|
var bus = new EventEmitter();
|
bus.addListener('state', writeStatus);
|
|
this.janus = new JanusVideoRoom(janusRoomConfig.url, webrtcurl, bus);
|
this.janus.join(janusRoomConfig.roomId, {video:videostream}, videostream);
|
}
|
|
|
}
|
|
customElements.define('webrtc-streamer-janus', WebRTCStreamerJanusElement);
|