\r
}\r
\r
-function postServer(url, data) {\r
+function sendHost(url, data) {\r
const request = new XMLHttpRequest()\r
request.open('POST', url, true)\r
request.setRequestHeader('Content-Type', 'application/json' )\r
request.send(data)\r
}\r
\r
-/* TODO: All this does is wrap a function in a promise. Allows pollServerForAnswer\r
-to call itself recursively with the same promise */\r
-function pollServer(url, clientPubKey, func) {\r
- return new Promise((resolve, reject) => {\r
- func(url, clientPubKey, resolve, reject )\r
- })\r
-}\r
-\r
/* Poll the server. Send get request, wait for timeout, send another request.\r
Do this until...? Can be used for either reconnecting or waiting for answer*/\r
-function pollServerForAnswer(url, data, resolve, reject) {\r
- const request = new XMLHttpRequest()\r
- request.open('GET', url, true)\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-Client-Offer', JSON.stringify(data))\r
- request.onreadystatechange = () => {\r
- if (request.status === 200) {\r
- if(request.readyState === 4) {\r
- console.log('Client: Recieved Answer from Host')\r
- console.log(request)\r
- resolve(request.response)\r
+function requestHostAnswer(url, data) {\r
+ return new Promise((resolve, reject) => {\r
+ const request = new XMLHttpRequest()\r
+ request.open('GET', url, true)\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-Client-Offer', JSON.stringify(data))\r
+ request.onreadystatechange = () => {\r
+ if (request.status === 200) {\r
+ if(request.readyState === 4) {\r
+ console.log('Client: Recieved Answer from Host')\r
+ console.log(request)\r
+ resolve(request.response)\r
+ }\r
+ }\r
+ else if (request.status === 504) {\r
+ console.log('timed out, resending')\r
+ resolve(requestHostAnswer(url, data))\r
+ }\r
+ else {\r
+ reject('server unhandled response of status ' + request.status)\r
}\r
}\r
- else if (request.status === 504) {\r
- console.log('timed out, resending')\r
- pollServerForAnswer(url, data, resolve, reject)\r
- }\r
- else {\r
- reject('server unhandled response of status ' + request.status)\r
- }\r
- }\r
- request.send()\r
+ request.send()\r
+ })\r
}\r
\r
/* Poll server for ice candidates until ice is complete */\r
-function pollServerForICECandidate(cpc, url, pubKey) {\r
+function requestHostICE(cpc, url, pubKey) {\r
let intervalID = window.setInterval(() => {\r
if (cpc.iceConnectionState.localeCompare('connected') !== 0\r
&& cpc.iceConnectionState.localeCompare('completed') !== 0) {\r
let response = JSON.parse(request.response)\r
switch(response['iceState']) {\r
case "a":\r
- cpc.addIceCandidate(new RTCIceCandidate(response.ice))\r
- break\r
+ cpc.addIceCandidate(new RTCIceCandidate(response.ice))\r
+ break\r
case "g": /* Gathering so let interval keep polling */\r
- break\r
+ break\r
case "c": /* host iceState == Complete, stop bugging it */\r
- clearInterval(intervalID)\r
- clearTimeout()\r
- break\r
+ clearInterval(intervalID)\r
+ clearTimeout()\r
+ break\r
default:\r
- console.log('Unhandled iceState in pollServerForICECandidate()' + response['iceState'])\r
- break\r
+ console.log('Unhandled iceState in requestHostICE()' + response['iceState'])\r
+ break\r
}\r
}\r
}\r
sdp: cpc.localDescription,\r
pubKey: cpk.n\r
}\r
- return pollServer(window.location, offer, pollServerForAnswer)\r
- }).then((serverResponse) => {\r
+ return requestHostAnswer(window.location, offer)\r
+ })\r
+ .then((serverResponse) => {\r
const answer = JSON.parse(serverResponse)\r
console.log('Client: Polling for ICE candidates')\r
- pollServerForICECandidate(cpc, window.location, cpk.n)\r
+ requestHostICE(cpc, window.location, cpk.n)\r
cpc.setRemoteDescription(answer.sdp)\r
cpc.onicecandidate = (event) => {\r
if (event.candidate) {\r
console.log('Client: Sending ice candidate to host')\r
- postServer(window.location, JSON.stringify({\r
+ sendHost(window.location, JSON.stringify({\r
cmd: '> ice pubkey',\r
ice: event.candidate,\r
pubKey: cpk.n\r
})\r
document.addEventListener('DOMContentLoaded', () => {\r
\r
- document.body.innerHTML = `<button> Setting up connection with host </button>`\r
+ document.body.innerHTML = `<button> Setting up connection with host </button>`\r
\r
});\r