openvidu-electron: cancel screen sharing fix

This commit is contained in:
pabloFuente 2019-05-31 11:31:35 +02:00
parent e4aab3edec
commit ec6171563a
3 changed files with 40 additions and 25 deletions

View File

@ -1,8 +1,9 @@
const ipcRenderer = require('electron').ipcRenderer;
const BrowserWindow = require('electron').remote.BrowserWindow;
var OV;
var openvidu;
var session;
var publisher;
var screenId;
var mySessionId;
@ -10,13 +11,24 @@ ipcRenderer.on('screen-share-ready', (event, message) => {
screenId = message;
});
function initPublisher() {
openvidu = new OpenVidu();
const shareScreen = document.getElementById("screen-sharing").checked;
if (shareScreen) {
openScreenShareModal();
} else {
publisher = openvidu.initPublisher("publisher");
joinSession();
}
}
function joinSession() {
mySessionId = document.getElementById("sessionId").value;
OV = new OpenVidu();
session = OV.initSession();
session = openvidu.initSession();
session.on("streamCreated", function (event) {
session.subscribe(event.stream, "subscriber");
});
@ -24,12 +36,8 @@ function joinSession() {
getToken(mySessionId).then(token => {
session.connect(token)
.then(() => {
const shareScreen = document.getElementById("screen-sharing").checked;
if (shareScreen) {
openScreenShareModal();
} else {
showSession();
var publisher = OV.initPublisher("publisher");
showSession();
if (!!publisher) {
session.publish(publisher);
}
})
@ -69,20 +77,22 @@ function openScreenShareModal() {
win.setMenu(null);
// win.webContents.openDevTools();
win.on('close', async () => {
const stream = await navigator.mediaDevices.getUserMedia({
audio: false,
video: {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: screenId
if (!!screenId) {
const stream = await navigator.mediaDevices.getUserMedia({
audio: false,
video: {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: screenId
}
}
}
});
showSession();
var publisher = OV.initPublisher("publisher", {
videoSource: stream.getVideoTracks()[0]
});
session.publish(publisher);
});
showSession();
publisher = openvidu.initPublisher("publisher", {
videoSource: stream.getVideoTracks()[0]
});
joinSession();
}
});
var theUrl = 'file://' + __dirname + '/modal.html'

View File

@ -26,7 +26,7 @@
<div id="join">
<h1>Join a video session</h1>
<form onsubmit="joinSession(); return false">
<form onsubmit="initPublisher(); return false">
<p>
<label>Session:</label>
<input type="text" id="sessionId" value="SessionA" required>

View File

@ -31,7 +31,7 @@
<h1>Share your screen</h1>
<div id="list-of-screens"></div>
<div id="footer">
<button id="cancel-btn" onclick="closeWindow()">Cancel</button>
<button id="cancel-btn" onclick="cancelSelection()">Cancel</button>
<button id="share-btn" onclick="sendScreenSelection()" disabled>Share</button>
</div>
</body>
@ -80,6 +80,11 @@
closeWindow();
}
function cancelSelection() {
ipcRenderer.send('screen-share-selected', undefined);
closeWindow();
}
function closeWindow() {
require('electron').remote.getCurrentWindow().close();
}