mirror of
https://github.com/csehviktor/status-monitor.git
synced 2025-08-08 18:06:14 +02:00
implement "caching"
This commit is contained in:
@@ -1,11 +1,14 @@
|
|||||||
import type { WebsocketStatus } from "@/components/ConnectionStatus";
|
import type { WebsocketStatus } from "@/components/ConnectionStatus";
|
||||||
import type { StatusMessage } from "@/services/types";
|
import type { StatusMessage } from "@/services/types";
|
||||||
|
import { getLastMessage, setLastMessage } from "@/services/store";
|
||||||
import { initializeConnection } from "@/services/websocket";
|
import { initializeConnection } from "@/services/websocket";
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
|
|
||||||
export function useWebsocket(url: string) {
|
export function useWebsocket(url: string) {
|
||||||
const [status, setStatus] = useState<WebsocketStatus>();
|
const [status, setStatus] = useState<WebsocketStatus>();
|
||||||
const [message, setMessage] = useState<StatusMessage | null>();
|
const [message, setMessage] = useState<StatusMessage | null>(
|
||||||
|
getLastMessage(),
|
||||||
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
initializeConnection(url, {
|
initializeConnection(url, {
|
||||||
@@ -14,6 +17,7 @@ export function useWebsocket(url: string) {
|
|||||||
|
|
||||||
setStatus("connected");
|
setStatus("connected");
|
||||||
setMessage(parsed);
|
setMessage(parsed);
|
||||||
|
setLastMessage(parsed);
|
||||||
},
|
},
|
||||||
onOpen: () => setStatus("connecting"),
|
onOpen: () => setStatus("connecting"),
|
||||||
onClose: () => setStatus("disconnected"),
|
onClose: () => setStatus("disconnected"),
|
||||||
|
|||||||
@@ -2,15 +2,14 @@ import type { StatusMessage } from "@/services/types";
|
|||||||
|
|
||||||
export type TimePeriod = "realtime" | "hour" | "day" | "week" | "month" | "all";
|
export type TimePeriod = "realtime" | "hour" | "day" | "week" | "month" | "all";
|
||||||
|
|
||||||
let data: StatusMessage[] = [];
|
const realtimeData: StatusMessage[] = [];
|
||||||
const maxRealtimePoints = 50;
|
|
||||||
|
|
||||||
export function addDataPoint(value: StatusMessage) {
|
export function getLastMessage(): StatusMessage | null {
|
||||||
data.push(value);
|
return JSON.parse(localStorage.getItem("last_message")!) as StatusMessage;
|
||||||
|
|
||||||
if (data.length > maxRealtimePoints) {
|
|
||||||
data.shift();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function setLastMessage(message: StatusMessage) {
|
||||||
|
localStorage.setItem("last_message", JSON.stringify(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function addDataPoint(value: StatusMessage) {
|
export function addDataPoint(value: StatusMessage) {
|
||||||
|
|||||||
Reference in New Issue
Block a user