34 lines
766 B
TypeScript
34 lines
766 B
TypeScript
import { ref } from 'vue'
|
|
|
|
export const priceSocketConnected = ref(false)
|
|
export const priceWssEnabled = ref(false)
|
|
|
|
export type PriceStreamLifecycle = 'idle' | 'connecting' | 'open' | 'closed'
|
|
|
|
export const priceStreamLifecycle = ref<PriceStreamLifecycle>('idle')
|
|
|
|
export const priceStreamConnectingSince = ref(0)
|
|
|
|
const CONNECTING_POLL_AFTER_MS = 8000
|
|
|
|
export function shouldUsePricePolling(): boolean {
|
|
if (!priceWssEnabled.value) {
|
|
return true
|
|
}
|
|
|
|
if (priceStreamLifecycle.value === 'open') {
|
|
return false
|
|
}
|
|
|
|
if (priceStreamLifecycle.value === 'connecting') {
|
|
const since = priceStreamConnectingSince.value
|
|
if (since > 0 && Date.now() - since >= CONNECTING_POLL_AFTER_MS) {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|