You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
1.7 KiB

4 years ago
<template>
<div>
Browser base64 Session Description
<br />
<textarea readonly="true" :value="localDescription"></textarea>
<br />Golang base64 Session Description
<br />
<textarea :value="remoteSessionDescription"></textarea>
<br />
<button @click="startSession">Start Session</button>
<br />
<br />Video
<br />
<video id="video1" width="160" height="120" autoplay muted></video>
<br />Logs
<br />
<div id="logs"></div>
</div>
</template>
<script>
let pc = new RTCPeerConnection({
iceServers: [
{
urls: "stun:stun.l.google.com:19302"
}
]
});
export default {
data() {
return {
localDescription: "",
remoteSessionDescription: ""
};
},
methods: {
startSession() {
this.ajax.post("/webrtc/answer", this.localDescription).then(result => {
this.remoteSessionDescription = result;
pc.setRemoteDescription(new RTCSessionDescription(result));
});
}
},
mounted() {
/* eslint-env browser */
var log = msg => {
document.getElementById("logs").innerHTML += msg + "<br>";
};
navigator.mediaDevices
.getUserMedia({ video: true, audio: true })
.then(stream => {
pc.addStream((document.getElementById("video1").srcObject = stream));
pc.createOffer()
.then(d => pc.setLocalDescription(d))
.catch(log);
})
.catch(log);
pc.oniceconnectionstatechange = e => log(pc.iceConnectionState);
pc.onicecandidate = event => {
if (event.candidate === null) {
this.localDescription = JSON.stringify(pc.localDescription);
}
};
}
};
</script>
<style>
</style>