File tree 3 files changed +17
-0
lines changed
3 files changed +17
-0
lines changed Original file line number Diff line number Diff line change @@ -25,6 +25,7 @@ export abstract class AMQPBaseClient {
25
25
channelMax = 0
26
26
frameMax : number
27
27
heartbeat : number
28
+ lastDataReceived : number | undefined = undefined
28
29
onerror : ( error : AMQPError ) => void
29
30
logger : Logger | null | undefined = console
30
31
/** Used for string -> arraybuffer when publishing */
@@ -85,6 +86,7 @@ export abstract class AMQPBaseClient {
85
86
close ( reason = "" , code = 200 ) : Promise < void > {
86
87
if ( this . closed ) return this . rejectClosed ( )
87
88
this . closed = true
89
+ this . lastDataReceived = undefined
88
90
let j = 0
89
91
const frame = new AMQPView ( new ArrayBuffer ( 512 ) )
90
92
frame . setUint8 ( j , 1 ) ; j += 1 // type: method
@@ -606,5 +608,18 @@ export abstract class AMQPBaseClient {
606
608
}
607
609
i += 1 // frame end
608
610
}
611
+ this . lastDataReceived = performance . now ( )
612
+ }
613
+
614
+ /**
615
+ * Get the time since since connection or last data received
616
+ * @returns milliseconds; Infinity if disconnected
617
+ */
618
+ durationSinceLastData ( ) : number {
619
+ if ( typeof this . lastDataReceived === 'number' ) {
620
+ return performance . now ( ) - this . lastDataReceived ;
621
+ } else {
622
+ return Infinity
623
+ }
609
624
}
610
625
}
Original file line number Diff line number Diff line change @@ -58,6 +58,7 @@ export class AMQPClient extends AMQPBaseClient {
58
58
socket . setTimeout ( ( this . heartbeat || 60 ) * 1000 )
59
59
// enable TCP keepalive if AMQP heartbeats are disabled
60
60
if ( this . heartbeat === 0 ) socket . setKeepAlive ( true , 60 )
61
+ this . lastDataReceived = performance . now ( )
61
62
return new Promise ( ( resolve , reject ) => {
62
63
socket . on ( 'timeout' , ( ) => reject ( new AMQPError ( "timeout" , this ) ) )
63
64
socket . on ( 'error' , ( err ) => reject ( new AMQPError ( err . message , this ) ) )
Original file line number Diff line number Diff line change @@ -50,6 +50,7 @@ export class AMQPWebSocketClient extends AMQPBaseClient {
50
50
this . socket = socket
51
51
socket . binaryType = "arraybuffer"
52
52
socket . onmessage = this . handleMessage . bind ( this )
53
+ this . lastDataReceived = performance . now ( )
53
54
return new Promise ( ( resolve , reject ) => {
54
55
this . connectPromise = [ resolve , reject ]
55
56
socket . addEventListener ( 'close' , reject )
You can’t perform that action at this time.
0 commit comments