Add exponential delay at reconnect
[e-mobility-charging-stations-simulator.git] / src / utils / Utils.ts
index d6fe05d42c7c282d3fe5e2dcafa18eff5cb694e1..a1f28155f26b21460cf43beb141be2b34ba513d4 100644 (file)
@@ -176,4 +176,14 @@ export default class Utils {
   }
 
   static insertAt = (str: string, subStr: string, pos: number): string => `${str.slice(0, pos)}${subStr}${str.slice(pos)}`;
+
+  /**
+   * @param  {number} [retryNumber=0]
+   * @return {number} - delay in milliseconds
+   */
+  static exponentialDelay(retryNumber = 0): number {
+    const delay = Math.pow(2, retryNumber) * 100;
+    const randomSum = delay * 0.2 * Math.random(); // 0-20% of the delay
+    return delay + randomSum;
+  }
 }