if (room !== '') {
socket.emit('create or join', room);
console.log('Criando ou acessando quarto ', room);
} else{
prompt("Digite o nome do paciente")
}
socket.on('created', room => isInitiator = true );
socket.on('full', room => console.log('Esta sala esta cheia'))
socket.on('join', room => {
console.log('Outro ponto também acessou esse quarto')
CanalPronto = true
})
socket.on('joined', room => { CanalPronto = true })
socket.on('log', array => console.log.apply(console, array))
function sendMessage(message) {
socket.emit('message', message);
}
socket.on('message', message => {
try{
console.log('Client received message:', message);
if (message === 'got user media') {
maybeStart();
} else if (message.type === 'offer') {
if (!isInitiator && !isStarted) {
maybeStart();
}
pc.setRemoteDescription(new RTCSessionDescription(message))
doAnswer();
} else if (message.type === 'answer' && isStarted) {
pc.setRemoteDescription(new RTCSessionDescription(message));
} else if (message.type === 'candidate' && isStarted) {
var candidate = new RTCIceCandidate({ sdpMLineIndex: message.label, candidate: message.candidate });
pc.addIceCandidate(candidate);
} else if (message === 'bye' && isStarted) {
handleRemoteHangup();
}
} catch (e){
console.log("O erro foi: ", e)
}
});
function gotStream(stream) {
console.log('Adding local stream.');
localStream = stream;
localVideo.srcObject = stream;
sendMessage('got user media');
if (isInitiator) {
maybeStart();
}
}
function maybeStart() {
// console.log('>>>>>>> maybeStart() ', isStarted, localStream, CanalPronto);
if (!isStarted && typeof localStream !== 'undefined' && CanalPronto) {
// console.log('>>>>>> creating peer connection');
createPeerConnection();
pc.addStream(localStream);
isStarted = true;
// console.log('isInitiator', isInitiator);
if (isInitiator) {
// console.log("This is the initiator")
doCall();
}
}
}
window.onbeforeunload = function() {
sendMessage('bye');
};
function createPeerConnection() {
try {
pc = new RTCPeerConnection(null);
pc.onicecandidate = handleIceCandidate;
pc.onaddstream = handleRemoteStreamAdded;
pc.onremovestream = handleRemoteStreamRemoved;
// console.log('Criado RTCPeerConnnection');
} catch (e) {
console.log('Failed to create PeerConnection, exception: ' + e.message);
alert('Cannot create RTCPeerConnection object.');
return;
}
}
function handleIceCandidate(event) {
console.log('icecandidate event: ', event);
if (event.candidate) {
// console.log("Enviando ICE Candidate")
sendMessage({ type: 'candidate', label: event.candidate.sdpMLineIndex, id: event.candidate.sdpMid, candidate: event.candidate.candidate });
} else {console.log('End of candidates.');}
}
function doCall() {
// console.log('Enviando oferta para o destino');
pc.createOffer(setLocalAndSendMessage, handleCreateOfferError);
}
function doAnswer() {
// console.log('Enviando resposta para o peer.')
pc.createAnswer().then(setLocalAndSendMessage, onCreateSessionDescriptionError)
}
function setLocalAndSendMessage(sessionDescription) {
pc.setLocalDescription(sessionDescription);
// console.log('função setLocalAndSendMessage criando mensagem', sessionDescription);
sendMessage(sessionDescription);
}
function onCreateSessionDescriptionError(error) {
console.trace('Failed to create session description: ' + error.toString());
}
function handleCreateOfferError(event) {
console.log('createOffer() error: ', event);
}
function handleRemoteStreamAdded(event) {
try{
remoteVideo.srcObject = event.stream}
catch (e){
console.log("O erro foi em handleRemoteStreamAdded: ", e)
}
}
function handleRemoteStreamRemoved(event) {
console.log('Remote stream removed. Event: ', event);
}