From 31f0fce7a93db39a72637427c79a426308aa9fbf Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Tue, 18 Aug 2026 02:09:09 +0200 Subject: [PATCH] Switch default transport to WebSocket - Dockerfile builds with --features websocket and sets VITE_TRANSPORT=websocket - Server default feature changed from socketio to websocket - Binary canvas transfer (1MB) instead of Socket.IO JSON (~3-4MB per connection) - Significantly reduces memory pressure under concurrent connections --- Dockerfile | 6 ++++-- crates/server/Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index ee97062..bdeee97 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,7 @@ WORKDIR /app/painter-js COPY painter-js/package.json painter-js/bun.lock ./ RUN bun install --frozen-lockfile COPY painter-js/ . +ENV VITE_TRANSPORT=websocket RUN bun run build FROM rust:1-alpine AS builder @@ -13,10 +14,11 @@ COPY Cargo.toml Cargo.lock ./ COPY crates/ ./crates/ RUN mkdir -p painter-js/dist && echo '' > painter-js/dist/index.html -RUN cargo build --release --bin server 2>&1 || true +RUN cargo build --release --bin server --no-default-features --features websocket 2>&1 || true COPY --from=frontend /app/painter-js/dist ./painter-js/dist -RUN touch crates/adapters/http-axum/src/routes.rs && cargo build --release --bin server +RUN touch crates/adapters/http-axum/src/routes.rs && \ + cargo build --release --bin server --no-default-features --features websocket FROM scratch COPY --from=builder /app/target/release/server /painter diff --git a/crates/server/Cargo.toml b/crates/server/Cargo.toml index d08710e..ac1968a 100644 --- a/crates/server/Cargo.toml +++ b/crates/server/Cargo.toml @@ -4,7 +4,7 @@ version.workspace = true edition.workspace = true [features] -default = ["socketio"] +default = ["websocket"] socketio = ["dep:socketio", "dep:socketioxide"] websocket = ["dep:websocket"]