X-Git-Url: https://git.kengrimes.com/?p=henge%2Fkiak.git;a=blobdiff_plain;f=client.js;h=d389945e264e79bd95cbbb7b8a82cc4134ce0c3d;hp=8813f550da280b974e2ed144858aca2f12288d7c;hb=b5c8f98ab42b8e7128441e4a456dfd4fc02f0e86;hpb=d33866cf8b1a188ad9ab23a934986bfd1b4726cb diff --git a/client.js b/client.js index 8813f55..d389945 100644 --- a/client.js +++ b/client.js @@ -3,20 +3,22 @@ const root = document.createElement('div') document.title = "Strapp.io Client" body.appendChild(root) document.body = body - +const conf = {"iceServers": [{ "url": "stun:stun.1.google.com:19302" }] } /* 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 pollServerTimeout(url, data, resolve, reject) { - console.log(`Polling server ${url} with`) - console.log(data) + console.log(`Polling server ${url} with ${data}`) const request = new XMLHttpRequest() request.open('GET', url, true) request.setRequestHeader('Content-Type', 'application/json' ) request.setRequestHeader('X-Strapp-Type', JSON.stringify(data)) request.onreadystatechange = () => { if (request.status === 200) { - console.log(request.response) - resolve(request.response) + 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') @@ -26,7 +28,6 @@ function pollServerTimeout(url, data, resolve, reject) { reject('server unhandled response of status ' + request.status) } } - console.log(data) request.send() } @@ -73,8 +74,10 @@ function getPublicKey() { /* Create, set, and get client Offer. Poll server for host answer. Set host answer as client remoteDescription */ -const cpc = new RTCPeerConnection() -console.log('creating offer') +const cpc = new RTCPeerConnection(conf) +cpc.oniceconnectionstatechange = () => { + console.log('iceConnectionState = ' + cpc.iceConnectionState) +} cpc.createOffer().then((offer) => { return cpc.setLocalDescription(offer) }) @@ -87,16 +90,35 @@ cpc.createOffer().then((offer) => { sdp: cpc.localDescription, pubKey: cpk } + cpc.onicecandidate = (event) => { + if (event.candidate) { + console.log('Client: Sending ice candidate to host') + pollServer(window.location, wsock.send(JSON.stringify({ + cmd: '> ice pubkey', + ice: event.candidate, + pubKey: cpk /* TODO: do we need to send this? */ + })), pollServerTimeout) + } + else { + /* Set up data channel here */ + console.log('Client: Finished setting up ICE candidates') + } + } + /* TODO: start polling for ice candidates, and then addIceCandidate() to cpc */ + //pollServer(window.location, {ice}, pollServerTimeout) + + /* Poll for answer */ return pollServer(window.location, offer, pollServerTimeout) - }).then((answer) => { - //console.log(answer) + }).then((serverResponse) => { + const answer = JSON.parse(serverResponse) + console.log(answer) /* TODO: State machine to parse answer */ + console.log('Setting Remote Description') cpc.setRemoteDescription(answer.sdp) }).catch( (err) => { console.log('error in sdp handshake: ' + err) }) -}) - .catch((err) => { +}).catch((err) => { console.log(err) - }) +})