- 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