diff --git a/Cargo.lock b/Cargo.lock index c108ef4..83c8e4e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7001,6 +7001,8 @@ dependencies = [ "futures", "futures-util", "jsonrpsee", + "metrics", + "metrics-derive", "op-alloy-consensus", "op-alloy-network", "op-alloy-rpc-jsonrpsee", diff --git a/Cargo.toml b/Cargo.toml index e6bd118..100d977 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,6 +61,8 @@ tracing = { version = "0.1.41" } serde = "1" serde_json = "1.0" url = "2.5" +metrics = "0.24.1" +metrics-derive = "0.1" [features] default = ["optimism"] diff --git a/src/flashblocks.rs b/src/flashblocks.rs index c3f8059..6c85684 100644 --- a/src/flashblocks.rs +++ b/src/flashblocks.rs @@ -69,7 +69,17 @@ impl FlashblocksClient { // Handle incoming messages while let Some(msg) = read.next().await { match msg { - Ok(Message::Text(text)) => { + Ok(Message::Binary(bytes)) => { + // Decode binary message to string first + let text = match String::from_utf8(bytes.to_vec()) { + Ok(text) => text, + Err(e) => { + error!("Failed to decode binary message: {}", e); + continue; + } + }; + + // Then parse JSON let payload: FlashblocksPayloadV1 = match serde_json::from_str(&text) { Ok(m) => m, @@ -79,9 +89,8 @@ impl FlashblocksClient { } }; - let _ = sender - .send(ActorMessage::BestPayload { payload: payload }) - .await; + let _ = + sender.send(ActorMessage::BestPayload { payload }).await; } Ok(Message::Close(_)) => break, Err(e) => {