functions/internal/Get-WebSockerConnectWaitTime.ps1
function Get-WebSockerConnectWaitTime { <# .Synopsis Get WebSocket connect retry wait time. .Description Get time to wait in seconds between WebSocket connect attempts. .Link https://github.com/tibber/Tibber.SDK.NET/blob/9c0e4441d2c2860fcb646c593a1064fdd4c52e9f/src/Tibber.Sdk/RealTimeMeasurementListener.cs#L477 #> param ( # Specifies the time to wait for WebSocket operation, or -1 to wait indefinitely. [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName)] [ValidateRange(0, [int]::MaxValue)] [Alias('Retry', 'Attempt')] [int] $RetryAttempt ) process { # Jitter of 5 to 60 seconds $jitter = Get-Random -Minimum 5 -Maximum 60 Write-Debug -Message "Jitter: $jitter" # Exponential backoff (max one day) $delay = [Math]::Min([Math]::Pow($RetryAttempt, 2), 86400) Write-Debug -Message "Delay: $delay" # Total wait time $waitTime = $jitter + $delay Write-Debug -Message "Wait time: $waitTime" # Output wait time $waitTime } } |