diff --git a/src/PeerFileReceive.ts b/src/PeerFileReceive.ts index fb59a47..c370458 100644 --- a/src/PeerFileReceive.ts +++ b/src/PeerFileReceive.ts @@ -18,11 +18,17 @@ 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 // 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 { @@ -40,6 +46,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) { @@ -79,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) @@ -122,6 +133,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..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 } @@ -213,6 +220,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')