Redirect safari and unsupported browsers

This commit is contained in:
ian ramzy 2020-03-27 12:32:22 -04:00
parent 3740ae6ff6
commit 53c1486793
2 changed files with 48 additions and 49 deletions

View File

@ -6,6 +6,23 @@ url = window.location.href;
const roomHash = url.substring(url.lastIndexOf('/') + 1).toLowerCase();
function getBrowserName() {
var name = "Unknown";
if (window.navigator.userAgent.indexOf("MSIE") !== -1) {
} else if (window.navigator.userAgent.indexOf("Firefox") !== -1) {
name = "Firefox";
} else if (window.navigator.userAgent.indexOf("Opera") !== -1) {
name = "Opera";
} else if (window.navigator.userAgent.indexOf("Chrome") !== -1) {
name = "Chrome";
} else if (window.navigator.userAgent.indexOf("Safari") !== -1) {
name = "Safari";
}
return name;
}
var browserName = getBrowserName();
var isWebRTCSupported =
navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
@ -13,14 +30,8 @@ var isWebRTCSupported =
navigator.msGetUserMedia ||
window.RTCPeerConnection;
// try {
// window.RTCPeerConnection.peerConnection.addStream
// } catch (e) {
// alert("Your browser doesn't support Neon Chat. Please use Chrome or Firefox.");
// window.location.href = "/landing";
// }
if (!isWebRTCSupported) {
// Handle IE
if (!isWebRTCSupported || browserName === "Safari" || browserName === "MSIE") {
alert("Your browser doesn't support Neon Chat. Please use Chrome or Firefox.");
window.location.href = "/";
}
@ -28,14 +39,6 @@ if (!isWebRTCSupported) {
function logIt(message, error) {
console.log(message);
// Add to logs on page
// let logs = document.getElementById('logs');
// let tmp = document.createElement('P');
// tmp.innerText = message;
// if (error) {
// tmp.classList.add('error');
// }
// logs.appendChild(tmp);
}
// Create an object to save various objects to without polluting the global namespace.
@ -53,32 +56,29 @@ var VideoChat = {
// accepted callback to the onMediaStream function, otherwise callback to the
// noMediaStream function.
requestMediaStream: function (event) {
logIt("requestMediaStream");
navigator.mediaDevices
.getUserMedia({video: true, audio: true})
.then(stream => {
VideoChat.onMediaStream(stream);
})
.catch(error => {
logIt(error);
logIt('Failed to get local webcam video, check webcam privacy settings');
setTimeout(VideoChat.requestMediaStream, 1000);
// alert("Please check your webcam browser privacy settings.")
});
navigator.mediaDevices.getUserMedia({
video: true,
audio: true
}).then(stream => {
VideoChat.onMediaStream(stream);
}).catch(error => {
logIt(error);
logIt('Failed to get local webcam video, check webcam privacy settings');
setTimeout(VideoChat.requestMediaStream, 1000);
});
},
requestScreenStream: function (event) {
navigator.mediaDevices
.getDisplayMedia({video: true, audio: true})
.then(stream => {
VideoChat.onMediaStream(stream);
})
.catch(error => {
logIt(error);
logIt('No media stream for us.');
alert("Please check your screen sharing browser privacy settings.")
});
navigator.mediaDevices.getDisplayMedia({
video: true,
audio: true
}).then(stream => {
VideoChat.onMediaStream(stream);
}).catch(error => {
logIt(error);
logIt('No media stream for us.');
});
},
// The onMediaStream function receives the media stream as an argument.
@ -279,7 +279,6 @@ function openFullscreen() {
}
}
function muteMicrophone() {
var muted = VideoChat.localStream.getAudioTracks()[0].enabled;
VideoChat.localStream.getAudioTracks()[0].enabled = !muted;

View File

@ -27,7 +27,7 @@ app.get('/room/*', function (req, res) {
app.use(express.static('public'));
function log(msg, room) {
function logIt(msg, room) {
console.log(room + ": " + msg)
}
@ -36,7 +36,7 @@ io.on('connection', function (socket) {
// When a client tries to join a room, only allow them if they are first or
// second in the room. Otherwise it is full.
socket.on('join', function (room) {
log('A client joined the room', room);
logIt('A client joined the room', room);
var clients = io.sockets.adapter.rooms[room];
var numClients = typeof clients !== 'undefined' ? clients.length : 0;
if (numClients === 0) {
@ -44,12 +44,12 @@ io.on('connection', function (socket) {
} else if (numClients === 1) {
socket.join(room);
// When the client is second to join the room, both clients are ready.
log('Broadcasting ready message', room);
logIt('Broadcasting ready message', room);
socket.broadcast.to(room).emit('willInitiateCall', room);
socket.emit('ready', room).to(room);
socket.broadcast.to(room).emit('ready', room);
} else {
log("room already full", room);
logIt("room already full", room);
socket.emit('full', room);
}
});
@ -57,12 +57,12 @@ io.on('connection', function (socket) {
// When receiving the token message, use the Twilio REST API to request an
// token to get ephemeral credentials to use the TURN server.
socket.on('token', function (room) {
log('Received token request', room);
logIt('Received token request', room);
twilio.tokens.create(function (err, response) {
if (err) {
log(err, room);
logIt(err, room);
} else {
log('Token generated. Returning it to the browser client', room);
logIt('Token generated. Returning it to the browser client', room);
socket.emit('token', response).to(room);
}
});
@ -70,19 +70,19 @@ io.on('connection', function (socket) {
// Relay candidate messages
socket.on('candidate', function (candidate, room) {
log('Received candidate. Broadcasting...', room);
logIt('Received candidate. Broadcasting...', room);
socket.broadcast.to(room).emit('candidate', candidate);
});
// Relay offers
socket.on('offer', function (offer, room) {
log('Received offer. Broadcasting...', room);
logIt('Received offer. Broadcasting...', room);
socket.broadcast.to(room).emit('offer', offer);
});
// Relay answers
socket.on('answer', function (answer, room) {
log('Received answer. Broadcasting...', room);
logIt('Received answer. Broadcasting...', room);
socket.broadcast.to(room).emit('answer', answer);
});
});