From 710675f4fa2973cea50e045e1aede523e9acc364 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Fri, 6 Nov 2020 17:32:50 +0100 Subject: [PATCH] webrtc connected on data channel connected. --- src/internal/webrtc.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/internal/webrtc.ts b/src/internal/webrtc.ts index 9b9efc82..88dc8842 100644 --- a/src/internal/webrtc.ts +++ b/src/internal/webrtc.ts @@ -32,7 +32,12 @@ export class NekoWebRTC extends EventEmitter { } get connected() { - return typeof this._peer !== 'undefined' && ['connected', 'checking', 'completed'].includes(this._state) + return ( + typeof this._peer !== 'undefined' && + ['connected', 'checking', 'completed'].includes(this._state) && + typeof this._channel !== 'undefined' && + this._channel.readyState == 'open' + ) } public async connect(sdp: string, lite: boolean, servers: string[]): Promise { @@ -68,11 +73,6 @@ export class NekoWebRTC extends EventEmitter { this._log.debug(`peer ice connection state changed: ${this._peer!.iceConnectionState}`) switch (this._state) { - case 'checking': - break - case 'connected': - this.onConnected() - break case 'failed': this.onDisconnected(new Error('peer failed')) break @@ -89,6 +89,7 @@ export class NekoWebRTC extends EventEmitter { this._channel = this._peer.createDataChannel('data') this._channel.onerror = this.onDisconnected.bind(this, new Error('peer data channel error')) this._channel.onmessage = this.onData.bind(this) + this._channel.onopen = this.onConnected.bind(this) this._channel.onclose = this.onDisconnected.bind(this, new Error('peer data channel closed')) this._peer.setRemoteDescription({ type: 'offer', sdp })