A class to monitor latency of any async function which works in a browser or node. This works by periodically calling the asyncTestFn and timing how long it takes the callback to be called. It can also periodically emit stats about this. This can be disabled and stats can be pulled via setting dataEmitIntervalMs = 0.

example

const monitor = new LatencyMonitor(); monitor.on('data', (summary) => console.log('Event Loop Latency: %O', summary));

example

const monitor = new LatencyMonitor({latencyCheckIntervalMs: 1000, dataEmitIntervalMs: 60000, asyncTestFn:ping}); monitor.on('data', (summary) => console.log('Ping Pong Latency: %O', summary));

Hierarchy

Index

References

Events

Re-exports Events

LatencyMonitorOptions

Re-exports LatencyMonitorOptions

SummaryObject

Re-exports SummaryObject

Constructors

constructor

  • new LatencyMonitor(__namedParameters?: { asyncTestFn: undefined | Function; dataEmitIntervalMs: undefined | number; latencyCheckIntervalMs: undefined | number; latencyRandomPercentage: undefined | number }): LatencyMonitor
  • Parameters

    • Optional __namedParameters: { asyncTestFn: undefined | Function; dataEmitIntervalMs: undefined | number; latencyCheckIntervalMs: undefined | number; latencyRandomPercentage: undefined | number }
      • asyncTestFn: undefined | Function
      • dataEmitIntervalMs: undefined | number
      • latencyCheckIntervalMs: undefined | number
      • latencyRandomPercentage: undefined | number

    Returns LatencyMonitor

Properties

Private _checkLatency

_checkLatency: any

Randomly calls an async fn every roughly latencyCheckIntervalMs (plus some randomness). If no async fn is found, it will simply report on event loop latency.

_checkLatencyID

_checkLatencyID: Timeout | undefined

_emitIntervalID

_emitIntervalID: Timeout | undefined

Private _emitSummary

_emitSummary: any

Emit summary only if there were events. It might not have any events if it was forced via a page hidden/show

_latencyData

_latencyData: { events: number; maxMs: number; minMs: number; startTime: any; totalMs: number } | undefined

Private _startTimers

_startTimers: any

Start internal timers

Private _stopTimers

_stopTimers: any

Stop internal timers

Methods

_initLatencyData

  • _initLatencyData(): { events: number; maxMs: number; minMs: number; startTime: any; totalMs: number }
  • Returns { events: number; maxMs: number; minMs: number; startTime: any; totalMs: number }

    • events: number
    • maxMs: number
    • minMs: number
    • startTime: any
    • totalMs: number

addListener

  • addListener(event: string | symbol, listener: (...args: any[]) => void): any
  • Parameters

    • event: string | symbol
    • listener: (...args: any[]) => void
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns any

emit

  • emit(event: string | symbol, ...args: any[]): boolean
  • Parameters

    • event: string | symbol
    • Rest ...args: any[]

    Returns boolean

getMaxListeners

  • getMaxListeners(): number

getSummary

  • Calling this function will end the collection period. If a timing event was already fired and somewhere in the queue, it will not count for this time period

    Returns SummaryObject

listenerCount

  • listenerCount(event: string | symbol): number

listeners

  • listeners(event: string | symbol): Function[]

off

  • off(event: string | symbol, listener: (...args: any[]) => void): any
  • Parameters

    • event: string | symbol
    • listener: (...args: any[]) => void
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns any

on

  • on(event: string | symbol, listener: (...args: any[]) => void): any
  • Parameters

    • event: string | symbol
    • listener: (...args: any[]) => void
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns any

once

  • once(event: string | symbol, listener: (...args: any[]) => void): any
  • Parameters

    • event: string | symbol
    • listener: (...args: any[]) => void
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns any

rawListeners

  • rawListeners(event: string | symbol): Function[]

removeAllListeners

  • removeAllListeners(event?: string | symbol): any

removeListener

  • removeListener(event: string | symbol, listener: (...args: any[]) => void): any
  • Parameters

    • event: string | symbol
    • listener: (...args: any[]) => void
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns any

setMaxListeners

  • setMaxListeners(n: number): any