WebRTC Turn/Stun config

This commit is contained in:
Abdussamed 2023-04-27 22:45:36 +03:00
parent 5360929167
commit a5bd0e9443
1 changed files with 45 additions and 18 deletions

View File

@ -25,26 +25,53 @@ export default class WebRTC
public events : { [eventname:string]: Function[] } = {}; public events : { [eventname:string]: Function[] } = {};
public channel : RTCDataChannel | undefined; public channel : RTCDataChannel | undefined;
public static defaultRTCConfig : RTCConfiguration = {
iceCandidatePoolSize: 0,
iceTransportPolicy:"all",
rtcpMuxPolicy:"require",
};
public static defaultICEServers : RTCIceServer[] = [{
urls: "stun:stun.l.google.com:19302"
},{
urls: "stun:stun1.l.google.com:19302"
},{
urls: "stun:stun2.l.google.com:19302"
},{
urls: "stun:stun3.l.google.com:19302"
},{
urls: "stun:stun4.l.google.com:19302"
}];
public peer? : Peer; public peer? : Peer;
constructor() public FileTransportChannel? : P2PFileSender;
constructor(
rtcConfig?: RTCConfiguration,
rtcServers?: RTCIceServer[]
)
{ {
this.rtc = new RTCPeerConnection({ let config : any = {};
iceCandidatePoolSize: 0,
iceTransportPolicy:"all", if(rtcConfig)
rtcpMuxPolicy:"require", {
iceServers:[{ Object.assign(
urls: "stun:stun.l.google.com:19302" config,
},{ WebRTC.defaultRTCConfig,
urls: "stun:stun1.l.google.com:19302" rtcConfig
},{ )
urls: "stun:stun2.l.google.com:19302" }else{
},{ Object.assign(
urls: "stun:stun3.l.google.com:19302" config,
},{ WebRTC.defaultRTCConfig
urls: "stun:stun4.l.google.com:19302" )
}] }
});
config.iceServers = rtcServers || WebRTC.defaultICEServers;
this.rtc = new RTCPeerConnection(config as RTCConfiguration);
this.rtc.addEventListener("connectionstatechange",()=>{ this.rtc.addEventListener("connectionstatechange",()=>{
this.eventConnectionState(); this.eventConnectionState();
}) })
@ -197,7 +224,7 @@ export default class WebRTC
if(this.rtc) if(this.rtc)
{ {
this.rtc.close(); this.rtc.close();
// this.rtc = undefined; //this.rtc = undefined;
}; };
this.emit('disconnected'); this.emit('disconnected');
WebRTC.channels.delete(this.id); WebRTC.channels.delete(this.id);