From f7059ee7fc9e2fdfa48e80a13b2843ac08cec1dc Mon Sep 17 00:00:00 2001 From: Jordan Date: Sun, 9 Jul 2017 16:42:24 +0000 Subject: [PATCH] name changes to client.js --- client.js | 85 +++++++++++++++++++++++++--------------------------- package.json | 66 ++++++++++++++++++++-------------------- 2 files changed, 73 insertions(+), 78 deletions(-) diff --git a/client.js b/client.js index 19ad38f..160d5dd 100644 --- a/client.js +++ b/client.js @@ -38,7 +38,7 @@ function getPublicKey() { } -function postServer(url, data) { +function sendHost(url, data) { const request = new XMLHttpRequest() request.open('POST', url, true) request.setRequestHeader('Content-Type', 'application/json' ) @@ -46,44 +46,38 @@ function postServer(url, data) { request.send(data) } -/* TODO: All this does is wrap a function in a promise. Allows pollServerForAnswer -to call itself recursively with the same promise */ -function pollServer(url, clientPubKey, func) { - return new Promise((resolve, reject) => { - func(url, clientPubKey, resolve, reject ) - }) -} - /* Poll the server. Send get request, wait for timeout, send another request. Do this until...? Can be used for either reconnecting or waiting for answer*/ -function pollServerForAnswer(url, data, resolve, reject) { - const request = new XMLHttpRequest() - request.open('GET', url, true) - /* But there is no JSON? */ - request.setRequestHeader('Content-Type', 'application/json' ) - request.setRequestHeader('X-Strapp-Type', 'client-sdp-offer') - request.setRequestHeader('X-Client-Offer', JSON.stringify(data)) - request.onreadystatechange = () => { - if (request.status === 200) { - if(request.readyState === 4) { - console.log('Client: Recieved Answer from Host') - console.log(request) - resolve(request.response) +function requestHostAnswer(url, data) { + return new Promise((resolve, reject) => { + const request = new XMLHttpRequest() + request.open('GET', url, true) + /* But there is no JSON? */ + request.setRequestHeader('Content-Type', 'application/json' ) + request.setRequestHeader('X-Strapp-Type', 'client-sdp-offer') + request.setRequestHeader('X-Client-Offer', JSON.stringify(data)) + request.onreadystatechange = () => { + if (request.status === 200) { + if(request.readyState === 4) { + console.log('Client: Recieved Answer from Host') + console.log(request) + resolve(request.response) + } + } + else if (request.status === 504) { + console.log('timed out, resending') + resolve(requestHostAnswer(url, data)) + } + else { + reject('server unhandled response of status ' + request.status) } } - else if (request.status === 504) { - console.log('timed out, resending') - pollServerForAnswer(url, data, resolve, reject) - } - else { - reject('server unhandled response of status ' + request.status) - } - } - request.send() + request.send() + }) } /* Poll server for ice candidates until ice is complete */ -function pollServerForICECandidate(cpc, url, pubKey) { +function requestHostICE(cpc, url, pubKey) { let intervalID = window.setInterval(() => { if (cpc.iceConnectionState.localeCompare('connected') !== 0 && cpc.iceConnectionState.localeCompare('completed') !== 0) { @@ -101,17 +95,17 @@ function pollServerForICECandidate(cpc, url, pubKey) { let response = JSON.parse(request.response) switch(response['iceState']) { case "a": - cpc.addIceCandidate(new RTCIceCandidate(response.ice)) - break + cpc.addIceCandidate(new RTCIceCandidate(response.ice)) + break case "g": /* Gathering so let interval keep polling */ - break + break case "c": /* host iceState == Complete, stop bugging it */ - clearInterval(intervalID) - clearTimeout() - break + clearInterval(intervalID) + clearTimeout() + break default: - console.log('Unhandled iceState in pollServerForICECandidate()' + response['iceState']) - break + console.log('Unhandled iceState in requestHostICE()' + response['iceState']) + break } } } @@ -150,16 +144,17 @@ getPublicKey().then((cpk) => { sdp: cpc.localDescription, pubKey: cpk.n } - return pollServer(window.location, offer, pollServerForAnswer) - }).then((serverResponse) => { + return requestHostAnswer(window.location, offer) + }) + .then((serverResponse) => { const answer = JSON.parse(serverResponse) console.log('Client: Polling for ICE candidates') - pollServerForICECandidate(cpc, window.location, cpk.n) + requestHostICE(cpc, window.location, cpk.n) cpc.setRemoteDescription(answer.sdp) cpc.onicecandidate = (event) => { if (event.candidate) { console.log('Client: Sending ice candidate to host') - postServer(window.location, JSON.stringify({ + sendHost(window.location, JSON.stringify({ cmd: '> ice pubkey', ice: event.candidate, pubKey: cpk.n @@ -220,6 +215,6 @@ getPublicKey().then((cpk) => { }) document.addEventListener('DOMContentLoaded', () => { - document.body.innerHTML = `` + document.body.innerHTML = `` }); diff --git a/package.json b/package.json index cb89904..3122b2b 100644 --- a/package.json +++ b/package.json @@ -1,33 +1,33 @@ -{ - "name": "strapp", - "version": "0.0.1", - "description": "A distributed webrtc bootstrapper", - "main": "main.js", - "scripts": { - "start": "electron ." - }, - "repository": { - "type": "git", - "url": "git@github.com:Jlavatai/strapp.git" - }, - "keywords": [ - "WebRTC", - "Cool", - "Desktop Sharing", - "Distributed", - "Prototype" - ], - "author": [ - "Jordan Lavatai", - "Ken Grimes" - ], - "license": "AGPL-3.0", - "devDependencies": {}, - "dependencies": { - "electron": "^1.6.11", - "get-port": "^3.1.0", - "mime": "^1.3.6", - "minimist": "^1.2.0", - "ws": "^3.0.0" - } -} +{ + "name": "strapp", + "version": "0.0.1", + "description": "A distributed webrtc bootstrapper", + "main": "main.js", + "scripts": { + "start": "electron ." + }, + "repository": { + "type": "git", + "url": "git@github.com:Jlavatai/strapp.git" + }, + "keywords": [ + "WebRTC", + "Cool", + "Desktop Sharing", + "Distributed", + "Prototype" + ], + "author": [ + "Jordan Lavatai", + "Ken Grimes" + ], + "license": "AGPL-3.0", + "devDependencies": {}, + "dependencies": { + "electron": "^1.6.11", + "get-port": "^3.1.0", + "mime": "^1.3.6", + "minimist": "^1.2.0", + "ws": "^3.0.0" + } +} -- 2.18.0