<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> 
 |