From 293e0efff6b5e5e3d3d0010404d223802049a341 Mon Sep 17 00:00:00 2001 From: Xavier Bauquet Date: Wed, 23 Jun 2021 12:45:23 +0200 Subject: [PATCH 1/2] feat: notify receiver on sender resume --- src/PeerFileReceive.ts | 8 ++++++++ src/PeerFileSend.ts | 1 + 2 files changed, 9 insertions(+) diff --git a/src/PeerFileReceive.ts b/src/PeerFileReceive.ts index fb59a47..593cbf4 100644 --- a/src/PeerFileReceive.ts +++ b/src/PeerFileReceive.ts @@ -18,6 +18,9 @@ interface Events { // Called when receiver (this) has requested to resume resume(): void + // Called when sender has requested to resume + resumed(): void + // Called when the receiver (this) calls cancel cancel(): void @@ -40,6 +43,8 @@ class ReceiveStream extends Writable { this.emit('chunk', data.slice(1)) } else if (data[0] === ControlHeaders.TRANSFER_PAUSE) { this.emit('paused') + } else if (data[0] === ControlHeaders.TRANSFER_RESUME) { + this.emit('resumed') } if (data[0] === ControlHeaders.TRANSFER_CANCEL) { @@ -122,6 +127,9 @@ export default class PeerFileReceive extends EventEmitter { this.rs.on('paused', () => { this.emit('paused') }) + this.rs.on('resumed', () => { + this.emit('resumed') + }) this.rs.on('cancelled', () => { this.emit('cancelled') }) diff --git a/src/PeerFileSend.ts b/src/PeerFileSend.ts index c000cc2..f8e0df6 100644 --- a/src/PeerFileSend.ts +++ b/src/PeerFileSend.ts @@ -213,6 +213,7 @@ export default class PeerFileSend extends EventEmitter { // Allow data to be sent & start sending data resume () { + this.sendPeer(ControlHeaders.TRANSFER_RESUME) this.paused = false this._resume() this.emit('resume') From 4bd7b21b51b1f068d758b24f93235ab8af6d7426 Mon Sep 17 00:00:00 2001 From: Xavier Bauquet Date: Wed, 23 Jun 2021 12:49:51 +0200 Subject: [PATCH 2/2] feat: add error event on simple-peer error --- src/PeerFileReceive.ts | 6 ++++++ src/PeerFileSend.ts | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/src/PeerFileReceive.ts b/src/PeerFileReceive.ts index 593cbf4..c370458 100644 --- a/src/PeerFileReceive.ts +++ b/src/PeerFileReceive.ts @@ -26,6 +26,9 @@ interface Events { // Called when the sender cancels the transfer cancelled(): void + + // Called when simple-peer connexion closes with error + error(reason?: string): void } class ReceiveStream extends Writable { @@ -84,6 +87,9 @@ export default class PeerFileReceive extends EventEmitter { this.rs = new ReceiveStream() this.peer = peer + this.peer.on("error", err => { + this.emit('error', JSON.stringify(err)); + }); peer.pipe(this.rs) diff --git a/src/PeerFileSend.ts b/src/PeerFileSend.ts index f8e0df6..6aa7312 100644 --- a/src/PeerFileSend.ts +++ b/src/PeerFileSend.ts @@ -29,6 +29,9 @@ interface Events { // Called when the receiver has requested a cancel cancelled(): void + + // Called when simple-peer connexion closes with error + error(reason?: string): void } /** @@ -112,6 +115,10 @@ export default class PeerFileSend extends EventEmitter { super() this.peer = peer + this.peer.on("error", err => { + this.emit('error', JSON.stringify(err)); + }); + this.file = file this.offset = offset }