Archived
2
0

Merge pull request #30 from mbattista/ice-race-condition

should fix race condition
This commit is contained in:
Miroslav Šedivý 2021-03-13 10:33:49 +01:00 committed by GitHub
commit 929f315f6e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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,12 @@ 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._candidates = []
this._peer this._peer
.createAnswer() .createAnswer()
.then((d) => { .then((d) => {
@ -250,7 +257,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
} }