| <html> | 
| <head> | 
| <script src="libs/EventEmitter.min.js" ></script> | 
| <script src="janusconfig.js" ></script> | 
| <script src="janusvideoroom.js" ></script> | 
| <script src="webrtcconfig.js" ></script> | 
| <link rel="stylesheet" type="text/css" href="styles.css"> | 
| <script type="module" src="webrtc-streamer-footer-element.js"></script> | 
| </head> | 
| <body>  | 
|     Janus Url:<input id="janusUrl" type="text" size="50" />  | 
|     Room id:<input id="janusRoom" type="number" /> | 
|     <input type="button" onclick="connect()" value="ConnectRoom" /> | 
|     <input type="button" onclick="openroom()" value="OpenRoom" /> | 
|     <nav id="menu"></nav> | 
|     <webrtc-streamer-footer></webrtc-streamer-footer> | 
| </body> | 
| <script> | 
|     // set default value | 
|     document.querySelector('#janusUrl').value  = janusRoomConfig.url; | 
|     document.querySelector('#janusRoom').value = janusRoomConfig.roomId; | 
|   | 
|     function getText(url) { | 
|         var text; | 
|         if (url.video) { | 
|             text = url.video + " "; | 
|         } | 
|         if (url.audio) { | 
|             text += url.audio + " "; | 
|         } | 
|         return text; | 
|     }     | 
|   | 
|     function clientCallBack (name, status) { | 
|         console.log("clientCallBack name:"+ name + " status:"+ status); | 
|   | 
|         const navId = "nav_" + name; | 
|         const navElt = document.querySelector(`[id="${navId}"]`); | 
|         if (navElt) { | 
|             if (status == "down") { | 
|                 navElt.className = ""; | 
|             } else if (status == "up") { | 
|                 navElt.className = "active"; | 
|             } | 
|         } | 
|     } | 
|   | 
|     var bus = new EventEmitter(); | 
|     bus.addListener('state', clientCallBack);     | 
|      | 
|     var janus = {};         | 
|   | 
|      | 
|     function connect(webrtcStream, user) {     | 
|         var serverName = document.querySelector('#janusUrl').value; | 
|         var roomName = parseInt(document.querySelector('#janusRoom').value);     | 
|   | 
|         let janusserver = new JanusVideoRoom(serverName, webrtcConfig.url, bus); | 
|         janus[serverName] = janusserver; | 
|         if (janusserver) { | 
|             janusserver.join(roomName); | 
|         } | 
|         return janusserver; | 
|     } | 
|      | 
|     function disconnect(webrtcStream, user) { | 
|         var serverName = document.querySelector('#janusUrl').value; | 
|   | 
|         let janusserver = janus[serverName]; | 
|         janus[serverName] = undefined; | 
|     } | 
|   | 
|     function join(webrtcStream, user) {     | 
|         var roomName = parseInt(document.querySelector('#janusRoom').value);     | 
|   | 
|         let janusserver = connect(); | 
|         if (janusserver) { | 
|             janusserver.join(roomName, webrtcStream, user); | 
|         } | 
|     } | 
|   | 
|     function leave(webrtcStream, user) { | 
|         var serverName = document.querySelector('#janusUrl').value; | 
|         var roomName = parseInt(document.querySelector('#janusRoom').value);         | 
|   | 
|         let janusserver = janus[serverName]; | 
|         if (janusserver) { | 
|             janusserver.leave(roomName, webrtcStream, user); | 
|         } | 
|     } | 
|   | 
|   | 
|     function openroom() { | 
|         var serverName = document.querySelector('#janusUrl').value; | 
|         var roomName = document.querySelector('#janusRoom').value;         | 
|         window.open( serverName + "/videoroomtest.html"); | 
|     }     | 
|      | 
|     // ------------------------------------------ | 
|     // init device list  | 
|     // ------------------------------------------     | 
|     function onGetDeviceList(remoteDeviceList) { | 
|         var deviceList = []; | 
|         if (remoteDeviceList) { | 
|             deviceList.push.apply( deviceList, remoteDeviceList ); | 
|         } | 
|   | 
|         // create navigation menu | 
|         var urllist = document.getElementById("menu"); | 
|         for (var dev in deviceList) { | 
|             var url = deviceList[dev]; | 
|             var option = document.createElement("a"); | 
|             option.url = url; | 
|             option.text = getText(url); | 
|             option.id   = "nav_" + url.video; | 
|             option.onclick = function () {  | 
|                 if (this.className === "active") { | 
|                     leave(this.url, this.url.video);  | 
|                 } else { | 
|                     join(this.url, this.url.video);  | 
|                 } | 
|             } | 
|             urllist.appendChild(option); | 
|         }         | 
|     } | 
|      | 
|      | 
|     // load | 
|     window.onload         = function() {  | 
|         fetch(webrtcConfig.url + "/api/getMediaList") | 
|             .then( (response) => (response.json()) ) | 
|             .then( (response) => onGetDeviceList(response) ) | 
|             .catch( (error) => console.log("getMediaList " + error )); | 
|         connect(); | 
|     }  | 
|      | 
|     // unload     | 
|     window.onbeforeunload = function() {  | 
|     } | 
| </script> | 
| </html> |