41 lines
944 B
JavaScript
41 lines
944 B
JavaScript
class PeerService {
|
|
constructor() {
|
|
if (!this.peer) {
|
|
this.peer = new RTCPeerConnection({
|
|
iceServers: [
|
|
{
|
|
urls: [
|
|
"stun:stun.l.google.com:19302",
|
|
"stun:global.stun.twilio.com:3478",
|
|
],
|
|
},
|
|
],
|
|
});
|
|
}
|
|
}
|
|
|
|
async getAnswer(offer) {
|
|
if (this.peer) {
|
|
await this.peer.setRemoteDescription(offer);
|
|
const ans = await this.peer.createAnswer();
|
|
await this.peer.setLocalDescription(new RTCSessionDescription(ans));
|
|
return ans;
|
|
}
|
|
}
|
|
|
|
async setLocalDescription(ans) {
|
|
if (this.peer) {
|
|
await this.peer.setRemoteDescription(new RTCSessionDescription(ans));
|
|
}
|
|
}
|
|
|
|
async getOffer() {
|
|
if (this.peer) {
|
|
const offer = await this.peer.createOffer();
|
|
await this.peer.setLocalDescription(new RTCSessionDescription(offer));
|
|
return offer;
|
|
}
|
|
}
|
|
}
|
|
|
|
export default new PeerService(); |