httpdRoot: undefined,
bindJail: undefined,
- /** @func
+ /** @func
* @summary Start main HTTP server
* @desc starts up an HTTP or HTTPS server used for routing
* @arg {Object} conf - object containing configuration properties
throw new Error(`${path} not found, ${routeName} not bound`)
},
- /** @func
+ /** @func
* @summary Router
* @desc listens for http client requests and services routes/files
* @arg {http.ClientRequest} request
// that isn't just "give you a route if it's available" on visit
/* else if (route.origin == (request.headers['x-forwarded-for'] ||
request.connection.remoteAddress))
- this.serveHost(response, route, htArgv)
- else */
+ this.serveHost(response, route, htArgv) */
+ else
this.serveClient(request, response, route)
}
/* If it's a valid routename that doesn't exist, make this client a host */
this.serveFile(response, bind.path)
},
- /** @func
+ /** @func
* @summary Serve a route to an http client
* @desc routes may be bound to the filesystem, or to an outgoing host
* @arg {http.ClientRequest} request - request from the client
serveClient: function (request, response, route) {
const type = request.headers['x-strapp-type']
const pubKey = request.headers['x-strapp-pubkey']
- dlog(`Client ${type || 'HT'} request routed to ${route.name}`)
+ dlog(`Client ${type || 'HT GET'} request routed to ${route.name}`)
switch (type) {
case null:
case undefined:
case 'client-sdp-offer':
let data = ''
if (pubKey) {
+ let data = request.headers['x-strapp-offer']
route.pendingResponses.addResponse(pubKey, response)
- request.on('data', (chunk) => data += chunk)
- request.on('end', () => route.socket.send(`${pubKey} ${type} ${data}`))
+ dlog(`${route.origin}=>\n${pubKey}\n${type}`)
+ dlog(JSON.parse(data))
+ route.socket.send(`${pubKey} ${type} ${data}`)
}
else {
response.writeHead(401)
}
},
- /** @func
+ /** @func
* @summary Create a new route for a host
* @desc makes a new route for the given route name
* @arg {string} routeName - name of the new route
})
route.pendingResponses.addResponse = function (key, response_p) {
let responses = this.get(key) || []
- this.set(key, responses.push(response_p))
+ responses.push(response_p)
+ this.set(key, responses)
}
this.routes[routeName] = route
this.serveHost(response, route, argv)
},
- /** @func
+ /** @Func
* @summary Serve a route to an authorized http host
* @desc services host application to the client, establishing a socket
* @arg {http.ServerResponse} response - response object to use
* @arg {Object} route - the route over
*/
hostMessage: function (message, route) {
- const argv = message.split(' ')
+ let argv = message.split(' ')
const command = argv[0][0]
argv = argv.slice(1)
dlog(`Received host message from ${route.name}: ${command}`)
}
},
- /** @func
+ /** @func
* @summary Serve a file to an http client after a request
* @desc reads files from the system to be distributed to clients, and
* buffers recently accessed files
response.end()
})
},
-
- /** @func
+
+ /** @func
* @summary Synchronize Reading Multiple Files
* @desc reads an array of files into an object, whose keys are the
* input filenames, and values are the data read