v1.3.0-beta/begin voice call
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
/* global webkitRTCPeerConnection */
|
||||
const emptyListener = (e) => console.log('EMPTY LISTENER FOR PHONE MANAGER', e);
|
||||
|
||||
const CONFIG = {
|
||||
iceServers: [
|
||||
{
|
||||
urls: [
|
||||
'stun:stun.l.google.com:19302',
|
||||
'stun:stun1.l.google.com:19302',
|
||||
'stun:stun2.l.google.com:19302',
|
||||
'stun:stun3.l.google.com:19302',
|
||||
'stun:stun4.l.google.com:19302',
|
||||
],
|
||||
},
|
||||
],
|
||||
iceCandidatePoolSize: 10,
|
||||
};
|
||||
|
||||
export default class PhoneManager {
|
||||
constructor(listener = emptyListener) {
|
||||
this.mediaStream = null;
|
||||
this.listener = listener;
|
||||
/* B I N D S */
|
||||
this.joinCall = this.joinCall.bind(this);
|
||||
this.getMediaStream = this.getMediaStream.bind(this);
|
||||
}
|
||||
async getMediaStream() {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (this.mediaStream !== null && this.mediaStream !== undefined) resolve(true);
|
||||
navigator.mediaDevices
|
||||
.getUserMedia({
|
||||
video: false,
|
||||
audio: true,
|
||||
})
|
||||
.then((mediaStream) => {
|
||||
this.mediaStream = mediaStream;
|
||||
resolve(true);
|
||||
})
|
||||
.catch((error) => reject(error));
|
||||
});
|
||||
}
|
||||
async joinCall() {
|
||||
await this.getMediaStream();
|
||||
|
||||
var peerConnection = new webkitRTCPeerConnection(CONFIG);
|
||||
console.log('Created Peer Connection', peerConnection);
|
||||
|
||||
peerConnection.addTrack(this.mediaStream.getAudioTracks()[0], this.mediaStream);
|
||||
peerConnection.onicecandidate = (ev) => console.log('Got ICE', ev);
|
||||
|
||||
var offer = peerConnection.createOffer();
|
||||
console.log('Created Offer', offer);
|
||||
|
||||
var answer = peerConnection.createAnswer();
|
||||
console.log('Created Answer', answer);
|
||||
}
|
||||
async leaveCall() {
|
||||
if (this.mediaStream !== null && this.mediaStream !== undefined) {
|
||||
this.mediaStream.getAudioTracks().forEach((track) => track.stop());
|
||||
}
|
||||
}
|
||||
toggleMute() {
|
||||
if (this.mediaStream !== null && this.mediaStream !== undefined) {
|
||||
this.mediaStream.getAudioTracks().forEach((track) => (track.enabled = !track.enabled));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user