diff --git a/public/js/chat.js b/public/js/chat.js index c7a475b..e1a2258 100644 --- a/public/js/chat.js +++ b/public/js/chat.js @@ -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; diff --git a/server.js b/server.js index 3b57f0e..12c7de4 100644 --- a/server.js +++ b/server.js @@ -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); }); });