Skip to content

Commit 1eaf4be

Browse files
committed
Make time duration since last server data available
1 parent c85a6ab commit 1eaf4be

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

src/amqp-base-client.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export abstract class AMQPBaseClient {
2323
channelMax = 0
2424
frameMax: number
2525
heartbeat: number
26+
lastDataReceived: number | undefined = undefined
2627
onerror: (error: AMQPError) => void
2728
/** Used for string -> arraybuffer when publishing */
2829
readonly textEncoder = new TextEncoder()
@@ -94,6 +95,7 @@ export abstract class AMQPBaseClient {
9495
close(reason = "", code = 200): Promise<void> {
9596
if (this.closed) return this.rejectClosed()
9697
this.closed = true
98+
this.lastDataReceived = undefined
9799
let j = 0
98100
const frame = new AMQPView(new ArrayBuffer(512))
99101
frame.setUint8(j, 1); j += 1 // type: method
@@ -589,5 +591,18 @@ export abstract class AMQPBaseClient {
589591
}
590592
i += 1 // frame end
591593
}
594+
this.lastDataReceived = performance.now()
595+
}
596+
597+
/**
598+
* Get the time since since connection or last data received
599+
* @returns milliseconds; Infinity if disconnected
600+
*/
601+
durationSinceLastData(): number {
602+
if (typeof this.lastDataReceived === 'number') {
603+
return performance.now() - this.lastDataReceived;
604+
} else {
605+
return Infinity
606+
}
592607
}
593608
}

src/amqp-socket-client.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export class AMQPClient extends AMQPBaseClient {
5353
writable: true,
5454
enumerable: false // hide it from console.log etc.
5555
})
56+
this.lastDataReceived = performance.now()
5657
return new Promise((resolve, reject) => {
5758
socket.on('error', (err) => reject(new AMQPError(err.message, this)))
5859
this.connectPromise = [resolve, reject]

src/amqp-websocket-client.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export class AMQPWebSocketClient extends AMQPBaseClient {
5050
this.socket = socket
5151
socket.binaryType = "arraybuffer"
5252
socket.onmessage = this.handleMessage.bind(this)
53+
this.lastDataReceived = performance.now()
5354
return new Promise((resolve, reject) => {
5455
this.connectPromise = [resolve, reject]
5556
socket.onclose = reject

0 commit comments

Comments
 (0)