should fix race condition

This commit is contained in:
mbattista 2021-03-12 23:45:01 +00:00
parent 108ac79443
commit a961dd6428

View File

@ -19,6 +19,7 @@ export abstract class BaseClient extends EventEmitter<BaseEvents> {
protected _displayname?: string protected _displayname?: string
protected _state: RTCIceConnectionState = 'disconnected' protected _state: RTCIceConnectionState = 'disconnected'
protected _id = '' protected _id = ''
protected _candidates: RTCIceCandidate[] = [];
get id() { get id() {
return this._id return this._id
@ -220,6 +221,9 @@ export abstract class BaseClient extends EventEmitter<BaseEvents> {
this._channel.onclose = this.onDisconnected.bind(this, new Error('peer data channel closed')) this._channel.onclose = this.onDisconnected.bind(this, new Error('peer data channel closed'))
this._peer.setRemoteDescription({ type: 'offer', sdp }) this._peer.setRemoteDescription({ type: 'offer', sdp })
for (let candidate of this._candidates) {
this._peer.addIceCandidate(candidate)
}
this._peer this._peer
.createAnswer() .createAnswer()
.then((d) => { .then((d) => {
@ -250,7 +254,11 @@ export abstract class BaseClient extends EventEmitter<BaseEvents> {
if (event === EVENT.SIGNAL.CANDIDATE) { if (event === EVENT.SIGNAL.CANDIDATE) {
const { data } = payload as SignalCandidatePayload const { data } = payload as SignalCandidatePayload
let candidate: RTCIceCandidate = JSON.parse(data) let candidate: RTCIceCandidate = JSON.parse(data)
this._peer!.addIceCandidate(candidate) if (this._peer) {
this._peer.addIceCandidate(candidate)
} else {
this._candidates.push(candidate);
}
return return
} }