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 { StatusMessage } from "@/services/types";
|
||||
import { getLastMessage, setLastMessage } from "@/services/store";
|
||||
import { initializeConnection } from "@/services/websocket";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
export function useWebsocket(url: string) {
|
||||
const [status, setStatus] = useState<WebsocketStatus>();
|
||||
const [message, setMessage] = useState<StatusMessage | null>();
|
||||
const [message, setMessage] = useState<StatusMessage | null>(
|
||||
getLastMessage(),
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
initializeConnection(url, {
|
||||
@@ -14,6 +17,7 @@ export function useWebsocket(url: string) {
|
||||
|
||||
setStatus("connected");
|
||||
setMessage(parsed);
|
||||
setLastMessage(parsed);
|
||||
},
|
||||
onOpen: () => setStatus("connecting"),
|
||||
onClose: () => setStatus("disconnected"),
|
||||
|
||||
@@ -2,15 +2,14 @@ import type { StatusMessage } from "@/services/types";
|
||||
|
||||
export type TimePeriod = "realtime" | "hour" | "day" | "week" | "month" | "all";
|
||||
|
||||
let data: StatusMessage[] = [];
|
||||
const maxRealtimePoints = 50;
|
||||
const realtimeData: StatusMessage[] = [];
|
||||
|
||||
export function addDataPoint(value: StatusMessage) {
|
||||
data.push(value);
|
||||
|
||||
if (data.length > maxRealtimePoints) {
|
||||
data.shift();
|
||||
export function getLastMessage(): StatusMessage | null {
|
||||
return JSON.parse(localStorage.getItem("last_message")!) as StatusMessage;
|
||||
}
|
||||
|
||||
export function setLastMessage(message: StatusMessage) {
|
||||
localStorage.setItem("last_message", JSON.stringify(message));
|
||||
}
|
||||
|
||||
export function addDataPoint(value: StatusMessage) {
|
||||
|
||||
Reference in New Issue
Block a user