sdp offer from client is incorrect somehow
[henge/kiak.git] / client.js
index 160d5dd..4d1bf9a 100644 (file)
--- a/client.js
+++ b/client.js
@@ -2,10 +2,8 @@ const body = document.createElement('body')
 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: duplicate in both client.js and host.js */\r
+/* TODO: This is duplicated in both client.js and host.js */\r
 function getPublicKey() {\r
   return new Promise( (resolve, reject) => {\r
     /* Check local storage for public key */\r
@@ -55,7 +53,7 @@ function requestHostAnswer(url, data) {
     /* 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.setRequestHeader('X-Strapp-Pubkey', data.pubKey)\r
     request.onreadystatechange = () => {\r
       if (request.status === 200) {\r
         if(request.readyState === 4) {\r
@@ -72,7 +70,7 @@ function requestHostAnswer(url, data) {
         reject('server unhandled response of status ' + request.status)\r
       }\r
     }\r
-    request.send()\r
+    request.send(data)\r
   })\r
 }\r
 \r
@@ -125,6 +123,7 @@ function requestHostICE(cpc, url, pubKey) {
 \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
@@ -170,16 +169,16 @@ getPublicKey().then((cpk) => {
       console.log('error in sdp handshake: ' + err)\r
     })\r
   }\r
-  /* Start data channel */\r
+  /* Start data channel, triggers on negotiation needed */\r
   dataChannel = cpc.createDataChannel("sendChannel");\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
@@ -187,14 +186,15 @@ getPublicKey().then((cpk) => {
     }\r
     console.log(hostScreen.getVideoTracks())\r
     console.log(video.srcObject)\r
-    video.play()\r
     video.onloadedmetadata = () => {\r
       video.play()\r
     }\r
   }\r
+\r
   dataChannel.onmessage = (msg) => {\r
     /* Get mediaStream from host and add it to the video */\r
     let hostMessage = JSON.parse(msg.data)\r
+    console.log('Client: Renego')\r
     cpc.setRemoteDescription(hostMessage.sdp).then(() => {\r
       cpc.createAnswer().then((answer) => {\r
         return cpc.setLocalDescription(answer)\r