Replace polling with websocket live sync

This commit is contained in:
2026-04-02 02:31:59 +03:00
parent 9a3785deb9
commit c04847b21c
15 changed files with 596 additions and 28 deletions

View File

@@ -10,6 +10,7 @@ The project now includes both the UI and the first backend/runtime slice:
- generated `3proxy.cfg` from persisted panel state
- runtime manager for start/restart/reload
- access-log-backed traffic ingestion from a real 3proxy process
- websocket-based live sync with top-level snapshot patches
- Docker image that builds the panel and compiles 3proxy in-container
- panel views for dashboard, users, and system
- edge-case-focused frontend and backend tests
@@ -23,6 +24,7 @@ npm run dev
`npm run dev` now starts both the Vite client and the Express control-plane server together.
If you only need the backend process, use `npm run dev:server`.
The local Vite dev server proxies both `/api` and `/ws` to the backend so the same panel build works with `http/ws` locally and can be promoted behind `https/wss` later.
Default panel credentials:
@@ -36,6 +38,7 @@ For Docker runs these values come from `compose.yaml`:
- `PANEL_SESSION_TTL_HOURS` with a default of `24`
The panel stores the issued session token in `sessionStorage`, so a browser refresh keeps the operator signed in until the token expires.
Panel preferences are stored in `localStorage`, the active tab is tracked in the URL hash, and runtime data now arrives through websocket `snapshot.init` / `snapshot.patch` messages instead of periodic polling.
Once the API is available, dashboard/user traffic values are refreshed from live 3proxy access logs instead of the seeded fallback snapshot.
## Docker run