const root = document.createElement('div')\r
document.title = "Strapp.io Client"\r
const conf = {"iceServers": [{ "urls": "stun:stun.1.google.com:19302" }] }\r
-let dataChannel\r
-let hostScreen\r
\r
/* TODO: This is duplicated in both client.js and host.js */\r
function getPublicKey() {\r
/* But there is no JSON? */\r
request.setRequestHeader('Content-Type', 'application/json' )\r
request.setRequestHeader('X-Strapp-Type', 'client-sdp-offer')\r
- request.setRequestHeader('X-Strapp-Pubkey', data.pubKey)\r
- request.setRequestHeader('X-Strapp-Pubkey', data.pubKey) \r
-- request.onreadystatechange = () => {\r
++ request.setRequestHeader('X-Strapp-Pubkey', data.pubKey)
++ request.onreadystatechange = () => {
if (request.status === 200) {\r
if(request.readyState === 4) {\r
console.log('Client: Recieved Answer from Host')\r
\r
/* Create and send offer -> Send ICE Candidates -> Poll for ICE Candidates */\r
getPublicKey().then((cpk) => {\r
+ let dataChannel\r
console.log('Client: Create and send offer')\r
const cpc = new RTCPeerConnection(conf)\r
\r
\r
/* Triggered when Host adds track to peer connection */\r
cpc.ontrack = (event) => {\r
- console.log(`track event is ${event}`)\r
- let remoteRTPSenders = cpc.getSenders()\r
let remoteRTPReceivers = cpc.getReceivers()\r
- console.log(remoteRTPReceivers)\r
- /* Add each remoteRTPSenders.track to own stream */\r
+ let hostScreen\r
let video = document.querySelector('video')\r
- video.autoplay = true\r
+ /* TODO: Audio, video, or other track? */\r
+ console.log(remoteRTPReceivers)\r
console.log(video)\r
hostScreen = new MediaStream([remoteRTPReceivers[0].track])\r
if(!video.srcObject) {\r
}\r
console.log(hostScreen.getVideoTracks())\r
console.log(video.srcObject)\r
- video.play()\r
video.onloadedmetadata = () => {\r
video.play()\r
}\r
*/
exports = require('minimist')(process.argv.slice(2), {
string: [ 'config', 'client-js', 'host-js', 'ca-cert', 'ca-key',
- 'port', 'index', 'bind', 'electron', 'dedicated'
+ 'port', 'bind', 'electron', 'file-dir', 'dedicated'
],
boolean: [ 'no-tls', 'legacy-socket' ],
alias: { c: 'config',
j: 'client-js',
J: 'host-js',
- T: 'no-tls',
C: 'ca-cert',
K: 'ca-key',
p: 'port',
- i: 'index',
b: 'bind',
e: 'electron',
- d: 'dedicated'
+ d: 'file-dir',
+ D: 'dedicated'
},
stopEarly: true,
unknown: (opt) => {
*/
exports['defaults'] = {
config: '/etc/strapp.conf:~/.strapp/strapp.conf:./strapp.conf',
- 'client-js': './client.js',
- 'host-js': './host.js',
+ 'client-js': './client-test.js',
+ 'host-js': './host-test.js',
tls: true,
'ca-cert': '../certs/cert.pem',
'ca-key': '../certs/key.pem',
port: 2443,
- index: './index.html',
bind: 'www:./www',
electron: undefined,
+ 'file-dir': undefined,
dedicated: undefined,
'legacy-socket': false
}
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
console.log(err)
})
console.log(`HTTP${(conf.tls == undefined) ? '' : 'S'} ` +
++<<<<<<< HEAD
+ `Server Started on port ${conf.port}${this.httpdRoot ?
++=======
+ `Server Started on port ${conf.port}${this.httpdRoot ?
++>>>>>>> 3f5fce84645ec2c59aec0908807d1e9cb3e05e2d
`, serving files from ${this.httpdRoot}`:''}`)
},
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
let htArgv = request.url.slice(1).split('?')
const routeName = htArgv[0].split('/')[0]
let route = this.routes[routeName]
++<<<<<<< HEAD
+ console.log(`route is ${route}`)
++=======
++>>>>>>> 3f5fce84645ec2c59aec0908807d1e9cb3e05e2d
/* If the route exists, check if we are a returning host or a new client */
if (route) {
if (route.bind) {
request.connection.remoteAddress))
this.serveHost(response, route, htArgv)
else */
++<<<<<<< HEAD
+ else {
++=======
++>>>>>>> 3f5fce84645ec2c59aec0908807d1e9cb3e05e2d
this.serveClient(request, response, route)
+ }
}
/* If it's a valid routename that doesn't exist, make this client a host */
else if (this.validRoutes.test(routeName)) {
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
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}`))
+ route.socket.send(`${pubKey} ${type} ${data}`)
}
else {
response.writeHead(401)
}
},
++<<<<<<< HEAD
+ /** @func
++=======
+ /** @func
++>>>>>>> 3f5fce84645ec2c59aec0908807d1e9cb3e05e2d
* @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) || []
++<<<<<<< HEAD
+ responses.push(response_p)
+ this.set(key, responses)
++=======
+ this.set(key, responses.push(response_p))
++>>>>>>> 3f5fce84645ec2c59aec0908807d1e9cb3e05e2d
}
this.routes[routeName] = route
this.serveHost(response, route, argv)
},
++<<<<<<< HEAD
+ /** @func
++=======
+ /** @func
++>>>>>>> 3f5fce84645ec2c59aec0908807d1e9cb3e05e2d
* @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
}
},
- /** @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