name changes to client.js
authorJordan <jordanlavatai@gmail.com>
Sun, 9 Jul 2017 16:42:24 +0000 (16:42 +0000)
committerJordan <jordanlavatai@gmail.com>
Sun, 9 Jul 2017 16:42:24 +0000 (16:42 +0000)
client.js
package.json

index 19ad38f..160d5dd 100644 (file)
--- a/client.js
+++ b/client.js
@@ -38,7 +38,7 @@ function getPublicKey() {
 \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
@@ -46,44 +46,38 @@ function postServer(url, data) {
   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
@@ -101,17 +95,17 @@ function pollServerForICECandidate(cpc, url, pubKey) {
             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
@@ -150,16 +144,17 @@ getPublicKey().then((cpk) => {
         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
@@ -220,6 +215,6 @@ getPublicKey().then((cpk) => {
 })\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
index cb89904..3122b2b 100644 (file)
@@ -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"
-  }
-}
+{\r
+  "name": "strapp",\r
+  "version": "0.0.1",\r
+  "description": "A distributed webrtc bootstrapper",\r
+  "main": "main.js",\r
+  "scripts": {\r
+    "start": "electron ."\r
+  },\r
+  "repository": {\r
+    "type": "git",\r
+    "url": "git@github.com:Jlavatai/strapp.git"\r
+  },\r
+  "keywords": [\r
+    "WebRTC",\r
+    "Cool",\r
+    "Desktop Sharing",\r
+    "Distributed",\r
+    "Prototype"\r
+  ],\r
+  "author": [\r
+    "Jordan Lavatai",\r
+    "Ken Grimes"\r
+  ],\r
+  "license": "AGPL-3.0",\r
+  "devDependencies": {},\r
+  "dependencies": {\r
+    "electron": "^1.6.11",\r
+    "get-port": "^3.1.0",\r
+    "mime": "^1.3.6",\r
+    "minimist": "^1.2.0",\r
+    "ws": "^3.0.0"\r
+  }\r
+}\r