Example #1
0
        start_timer = setTimeout(() => {
            server = new Server({
                ca: path.join(config.PATH_ROOT, config.ssl.ca)
              , crt: path.join(config.PATH_ROOT, config.ssl.crt)
              , key: path.join(config.PATH_ROOT, config.ssl.key)
            })
            signaling_upgrade = new SignalingUpgrade(server)
            server.listen(config.https.port)

            
            fs.readdir(COMMONS, (err, files) => {
                if ( err ) throw err

                files.forEach(file => {
                    addRouteHandler(path.join(COMMONS, file))
                })
            })

            fs.readdir(ROUTES, (err, files) => {
                if ( err ) throw err

                files.forEach(file => {
                    addRouteHandler(path.join(ROUTES, file))
                })
            })

            fs.readdir(ROUTES_SECURE, (err, files) => {
                if ( err ) throw err

                files.forEach(file => {
                    addRouteHandler(path.join(ROUTES, file))
                })
            })

            console.log(`[${config.app.name}] https: http server running on port ${config.https.port}`)
        }, 1000)
Example #2
0
        fs.stat(file, (err, stats) => {
            if ( err )
                throw err // TODO

            try {
                  if ( !stats.isFile() )
                    throw new TypeError("not a file")

                  if (require.cache[file])
                    delete require.cache[file]

                  const mod = require(file)
                  const mod_path = mod.path || function(){ throw new ReferenceError("missing path") }()
                  const mod_handler = mod.handleRoute || function(){ throw new ReferenceError("missing handler") }()

                  server.addRouteHandler(mod_path, mod_handler)
                  console.log(`[${config.app.name}] http: route added for ${mod_path}`)
              } catch (err) {
                  console.error(err.stack)
                  //throw err //TODO
              }
        })
Example #3
0
.then(() => {
    const server = new Server({
        ca: path.join(config.PATH_ROOT, config.ssl.ca)
      , crt: path.join(config.PATH_ROOT, config.ssl.crt)
      , key: path.join(config.PATH_ROOT, config.ssl.key)
    })
    const signal = new SignalingUpgrade(server, ["signal"])
    const streamers = new Set
    const peers = new Set

    signal.addEventListener("signal", e => {
        const {cmd, from} = e

        if ( cmd === "connect" ) {
            peers.add(from)
            from.addEventListener("close", e => peers.delete(from))

            // forward a connect request to all streamers
            streamers.forEach(streamer => {
                if ( streamer === from )
                  return

                streamer.frame_text({
                    cmd: "connect"
                  , peer: from.uid
                }, { stringify: true })
            })
        }
        else if ( cmd === "stream" ) {
            streamers.add(from)
            from.addEventListener("close", e => streamers.delete(from))

            peers.forEach(peer => {
                if ( peer === from )
                  return

                from.frame_text({
                    cmd: "connect"
                  , peer: peer.uid
                }, { stringify: true })
            })
        }

        /*
        if ( cmd === "stream" ) {
            streamers.add(from)
            e.send({ added: true })

            const onlurker = e => {
                from.send({ cmd: "lurker", data: [...lurkers].map(lurker=>lurker.uid) })
            }
            signal.addEventListener("lurker", onlurker)
            from.addEventListner("close", e => {
                streamers.delete(from)
                signal.removeEventListener("lurker", onlurker)
            })
        }

        if ( cmd === "lurk" ) {
            lurkers.add(from)
            e.send({ added: true })
            signal.dispatchEvent("lurker")
        }*/
    })

    const addRouteHandler = (file) => {
        fs.stat(file, (err, stats) => {
            if ( err )
                throw err // TODO

            try {
                  if ( !stats.isFile() )
                    throw new TypeError("not a file")

                  if (require.cache[file])
                    delete require.cache[file]

                  const mod = require(file)
                  const mod_path = mod.path || function(){ throw new ReferenceError("missing path") }()
                  const mod_handler = mod.handleRoute || function(){ throw new ReferenceError("missing handler") }()

                  server.addRouteHandler(mod_path, mod_handler)
                  console.log(`[${config.app.name}] http: route added for ${mod_path}`)
              } catch (err) {
                  console.error(err.stack)
                  //throw err //TODO
              }
        })
    }

    fs.readdir(COMMONS, (err, files) => {
        if ( err ) throw err

        files.forEach(file => {
            addRouteHandler(path.join(COMMONS, file))
        })
    })


    fs.readdir(ROUTES, (err, files) => {
        if ( err ) throw err

        files.forEach(file => {
            addRouteHandler(path.join(ROUTES, file))
        })
    })

    server.listen(config.videomaster.port)
    console.log(`videomaster server listening (${config.videomaster.port})`)
}).catch(e => {