Skip to content

Commit d54bf75

Browse files
committed
remove feature flag, enable_compression arg, fix integration test
1 parent fab8533 commit d54bf75

File tree

4 files changed

+21
-10
lines changed

4 files changed

+21
-10
lines changed

crates/websocket-proxy/Cargo.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,10 @@ redis = "0.30.0"
3232
redis-test = { version = "0.10.0", optional = true }
3333
uuid = { version = "1.16.0", features = ["v4"] }
3434
tokio-util = "0.7.12"
35-
brotli = { version = "8.0.1", optional = true }
35+
brotli = "8.0.1"
3636

3737
[dependencies.ring]
3838
version = "0.17.12"
3939

4040
[features]
4141
integration = ["redis-test"]
42-
compression = ["brotli"]

crates/websocket-proxy/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,8 @@ When Redis is enabled, the following features are available:
6262

6363
If the Redis connection fails, the proxy will automatically fall back to in-memory rate limiting.
6464

65+
### Brotli Compression
66+
67+
The proxy supports compressing messages to downstream clients using Brotli.
68+
69+
To enable this, pass the parameter `--enable-compression`

crates/websocket-proxy/src/integration.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ mod test {
2727
server: Server,
2828
server_addr: SocketAddr,
2929
client_id_to_handle: HashMap<usize, JoinHandle<()>>,
30-
sender: Sender<String>,
30+
sender: Sender<Vec<u8>>,
3131
}
3232

3333
impl TestHarness {
@@ -153,7 +153,10 @@ mod test {
153153
}
154154

155155
fn send_messages(&mut self, messages: Vec<&str>) {
156-
let messages: Vec<String> = messages.into_iter().map(String::from).collect();
156+
let messages: Vec<Vec<u8>> = messages
157+
.into_iter()
158+
.map(|m| m.as_bytes().to_vec())
159+
.collect();
157160

158161
for message in messages.iter() {
159162
match self.sender.send(message.clone()) {

crates/websocket-proxy/src/main.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ use clap::Parser;
1818
use dotenvy::dotenv;
1919
use metrics_exporter_prometheus::PrometheusBuilder;
2020
use rate_limit::RedisRateLimit;
21-
#[cfg(feature = "compression")]
2221
use std::io::Write;
2322
use std::net::SocketAddr;
2423
use std::sync::Arc;
@@ -70,6 +69,13 @@ struct Args {
7069
help = "Maximum number of concurrently connected clients"
7170
)]
7271
per_ip_connections_limit: usize,
72+
#[arg(
73+
long,
74+
env,
75+
default_value = "false",
76+
help = "Enable brotli compression on messages to downstream clients"
77+
)]
78+
enable_compression: bool,
7379

7480
#[arg(
7581
long,
@@ -210,8 +216,7 @@ async fn main() {
210216
.active_connections
211217
.set((send.receiver_count() - 1) as f64);
212218

213-
#[cfg(feature = "compression")]
214-
let message_data = {
219+
let message_data = if args.enable_compression {
215220
let data_bytes = data.as_bytes();
216221
let mut compressed_data_bytes = Vec::new();
217222
{
@@ -220,11 +225,10 @@ async fn main() {
220225
compressor.write_all(&data_bytes).unwrap();
221226
}
222227
compressed_data_bytes
228+
} else {
229+
data.into_bytes()
223230
};
224231

225-
#[cfg(not(feature = "compression"))]
226-
let message_data = data.into_bytes();
227-
228232
match send.send(message_data) {
229233
Ok(_) => (),
230234
Err(e) => error!(message = "failed to send data", error = e.to_string()),

0 commit comments

Comments
 (0)