Skip to content
Snippets Groups Projects
Commit 984ead64 authored by Marshall Quander's avatar Marshall Quander
Browse files

Take advantage of new media renegotiation support

parent cd009b20
No related branches found
No related tags found
No related merge requests found
......@@ -62,8 +62,7 @@ class Lobby extends React.Component {
}
onWebsocketMessage(event) {
var message = JSON.parse(event.data);
this.session.receive(message);
this.session.receive(JSON.parse(event.data));
}
render() {
......
......@@ -58,12 +58,19 @@ AFRAME.registerInputMappings(config);
registerNetworkSchemas();
registerTelemetry();
function shareScreen() {
const track = NAF.connection.adapter.localMediaStream.getVideoTracks()[0];
async function shareMedia(audio, video) {
const constraints = {
audio: !!audio,
video: video ? { mediaSource: "screen", height: 720, frameRate: 30 } : false
};
const mediaStream = await navigator.mediaDevices.getUserMedia(constraints);
NAF.connection.adapter.setLocalMediaStream(mediaStream);
const id = `${NAF.clientId}-screen`;
let entity = document.getElementById(id);
if (!entity) {
if (entity) {
entity.setAttribute("visible", !!video);
} else if (video) {
const sceneEl = document.querySelector("a-scene");
entity = document.createElement("a-entity");
entity.id = id;
......@@ -75,12 +82,10 @@ function shareScreen() {
entity.setAttribute("networked", { template: "#video-template" });
sceneEl.appendChild(entity);
}
track.enabled = !track.enabled;
entity.setAttribute("visible", track.enabled);
}
window.App = {
async onSceneLoad() {
const qs = queryString.parse(location.search);
const scene = document.querySelector("a-scene");
......@@ -119,31 +124,20 @@ window.App = {
const myNametag = document.querySelector("#player-rig .nametag");
myNametag.setAttribute("text", "value", username);
scene.addEventListener("action_share_screen", shareScreen);
const mediaStream = await navigator.mediaDevices.getUserMedia({
audio: true,
video:
qs.screen === "true"
? { mediaSource: "screen", height: 720, frameRate: 30 }
: false
var sharingScreen = false;
scene.addEventListener("action_share_screen", () => {
sharingScreen = !sharingScreen;
shareMedia(true, sharingScreen);
});
// Don't send video by deafult
const videoTracks = mediaStream.getVideoTracks();
if (videoTracks.length) {
videoTracks[0].enabled = false;
}
if (qs.offline) {
App.onConnect();
} else {
scene.components["networked-scene"].connect();
document.body.addEventListener("connected", App.onConnect);
// @TODO ideally the adapter should exist before connect, but it currently doesnt so we have to do this after calling connect. This might be a race condition in other adapters.
NAF.connection.adapter.setLocalMediaStream(mediaStream);
scene.components["networked-scene"].connect();
document.body.addEventListener("connected", App.onConnect);
await shareMedia(true, sharingScreen);
}
},
......
......@@ -3686,10 +3686,6 @@ min-document@^2.19.0:
dependencies:
dom-walk "^0.1.0"
minijanus@^0.1.6:
version "0.1.7"
resolved "https://registry.yarnpkg.com/minijanus/-/minijanus-0.1.7.tgz#a4aba659e0fc46127450aa440b32de82c6cc46b9"
minijanus@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/minijanus/-/minijanus-0.4.0.tgz#4d08529da795886b1aab6714ee7c9ff122c8c802"
......@@ -3794,12 +3790,12 @@ mv@^2.1.1:
ncp "~2.0.0"
rimraf "~2.4.0"
naf-janus-adapter@^0.1.10:
version "0.1.10"
resolved "https://registry.yarnpkg.com/naf-janus-adapter/-/naf-janus-adapter-0.1.10.tgz#322d5eeccefc5078da7e4355537d739bbb167794"
naf-janus-adapter@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/naf-janus-adapter/-/naf-janus-adapter-0.3.0.tgz#fee55fe0f4724238da5f87fbb0e7f75cd522905e"
dependencies:
debug "^3.1.0"
minijanus "^0.1.6"
minijanus "^0.4.0"
nan@^2.3.0:
version "2.8.0"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment