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
/* 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
reject('server unhandled response of status ' + request.status)\r
}\r
}\r
- request.send()\r
+ request.send(data)\r
})\r
}\r
\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
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
}\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