fix(ui): показывать остановку потока live-трафика

This commit is contained in:
Denozordec committed 2026-09-24 01:13:11 +07:00
1 parent e05b3a38c8
commit 9eb6a3fad1
4 files changed
+53 -2

No files matched your search

+9 -1
View File
@@ -55,6 +55,7 @@ export function useTrafficLive(opts: {
signal: ac.signal,
credentials: "include",
})
if (ac.signal.aborted) return
if (!res.ok || !res.body) {
setError(`live HTTP ${res.status}`)
return
@@ -63,7 +64,11 @@ export function useTrafficLive(opts: {
const decoder = new TextDecoder()
while (!ac.signal.aborted) {
const { done, value } = await reader.read()
if (done) break
if (ac.signal.aborted) return
if (done) {
setError("Поток live завершён")
break
}
buf += decoder.decode(value, { stream: true })
const parts = buf.split("\n\n")
buf = parts.pop() ?? ""
@@ -72,6 +77,9 @@ export function useTrafficLive(opts: {
const ev = parseSseBlock(raw)
if (ev.event === "sample" && ev.data) {
const parsed = JSON.parse(ev.data) as TrafficLiveSample
if (!parsed || !Number.isFinite(parsed.rxMbps) || !Number.isFinite(parsed.txMbps) || parsed.rxMbps < 0 || parsed.txMbps < 0 || typeof parsed.at !== "string" || !Number.isFinite(Date.parse(parsed.at))) {
throw new Error("Некорректные данные live-потока")
}
setSample(parsed)
setError(null)
} else if (ev.event === "error" && ev.data) {