document.title = "Strapp.io Host"
+
+
const conf = {"iceServers": [{ "urls": "stun:stun.1.google.com:19302" }] }
const clients = new Map([])
const iceCandidates = []
getPublicKey().then((hpk) => {
hpc.onicecandidate = (event) => {
if (event.candidate) {
+ console.log('Host: Allocating ice candidate for client')
iceCandidates.push(JSON.stringify({
- cmd: '< ice pubKey',
+ cmd: "< ice pubKey",
ice: event.candidate,
hostPubKey: hpk.n, /* TODO: do we need to send this? */
clientPubKey: offer.pubKey,
- iceCandidateAvailable: true
+ iceState: "a"
}))
}
else {
console.log('Host: Finished sending ICE candidates')
+ console.log(hpc)
}
}
console.log('Host: Sending answer to Client')
dataChannel.onmessage = (msg) => {
console.log(msg.data)
}
- dataChannel.send('Hi from the host')
+ dataChannel.onopen = () => {
+ dataChannel.send(`Hi ${offer.pubKey} -host`)
+ }
}
hpc.oniceconnectionstatechange = () => {
console.log('iceConnectionState = ' + hpc.iceConnectionState)
})
})
-
-
}
function handleNewIceSubmission(msg) {
}
function handleIceRequest(msg) {
- console.log('Host: Sending ice candidate to client')
- const hpc = clients.get(msg)
- const iceCandidates = iceCandidates.pop()
+ console.log('Host: Handling ice candidate request')
+ console.log(iceCandidates)
+ const hpc = clients.get(msg.pubKey)
+ const iceCandidate = iceCandidates.pop()
if (iceCandidate !== undefined) {
wsock.send(iceCandidate)
} else {
- wsock.send('no ice candidates')
+ if (hpc.iceGatheringState.localeCompare('gathering') === 0) {
+ wsock.send(`{"cmd" : "< ice pubKey", "clientPubKey":"${msg.pubKey}", "iceState": "g"}`)
+ }
+ else if (hpc.iceGatheringState.localeCompare('complete') === 0) {
+ wsock.send(`{"cmd" : "< ice pubKey", "clientPubKey":"${msg.pubKey}", "iceState": "c"}`)
+ }
+
}
}
wsock.onmessage = (serverMsg) => {
/* msg is either offer or ice candidate or ice candidate request*/
-
+ /* What if data null? */
let msg = JSON.parse(serverMsg.data)
- const clientID = msg.pubKey || msg
+ const clientID = msg.pubKey
/* TODO: redo this trash */
if (clients.has(clientID)) {
}
}
}
+ document.body.innerHTML = '<div>Choose options for client</div> <video autoplay></video>'
+
+ navigator.mediaDevices.getUserMedia({ video : { mediaSource: "screen", // whole screen sharing
+ // mediaSource: "window", // choose a window to share
+ // mediaSource: "application", // choose a window to share
+ width: {max: '1920'},
+ height: {max: '1080'},
+ frameRate: {max: '10'}} })
+ .then(function(mediaStream) {
+ let video = document.querySelector('video')
+ video.srcObject = mediaStream
+ video.onloadedmetadata = function(e) {
+ video.play()
+ }
+ })
+ .catch(function(err) { console.log(err); }); // always check for errors at the end.
})
}
else {