v1.1.0 — Gzip canvas compression + throttled sends
All checks were successful
CI / ci (push) Successful in 6m29s
All checks were successful
CI / ci (push) Successful in 6m29s
- Canvas snapshots gzip-compressed before sending: 1MB raw -> ~1-5KB for a mostly-white canvas, ~100-500KB for a busy one - Semaphore throttles concurrent canvas sends (default 20) to prevent memory spikes during connection bursts - Frontend decompresses gzip via browser DecompressionStream API - New config: MAX_CONCURRENT_CANVAS_SENDS (default 20) - Added flate2 dependency for gzip encoding
This commit is contained in:
@@ -14,6 +14,7 @@ const DEFAULT_BROADCAST_CAPACITY: usize = 1024;
|
||||
const DEFAULT_SNAPSHOT_INTERVAL_SECS: u64 = 300;
|
||||
const DEFAULT_SNAPSHOT_MAX: usize = 5;
|
||||
const DEFAULT_SNAPSHOT_DIR: &str = "snapshots/";
|
||||
const DEFAULT_MAX_CONCURRENT_CANVAS_SENDS: usize = 20;
|
||||
|
||||
pub struct EnvConfigSource;
|
||||
|
||||
@@ -24,6 +25,10 @@ impl ConfigSource for EnvConfigSource {
|
||||
address: env_or("ADDRESS", DEFAULT_ADDRESS),
|
||||
port: parse_env("PORT", DEFAULT_PORT)?,
|
||||
enable_cors: parse_bool_env("ENABLE_CORS", true),
|
||||
max_concurrent_canvas_sends: parse_env(
|
||||
"MAX_CONCURRENT_CANVAS_SENDS",
|
||||
DEFAULT_MAX_CONCURRENT_CANVAS_SENDS,
|
||||
)?,
|
||||
},
|
||||
canvas: CanvasConfig {
|
||||
width: parse_env("CANVAS_WIDTH", DEFAULT_CANVAS_WIDTH)?,
|
||||
|
||||
Reference in New Issue
Block a user