```rust
struct MyHandler;
impl EngineIoHandler for MyHandler { type Data = ();
fn on_connect(&self, socket: &Socket<Self>) {
println!("socket connect {}", socket.sid);
}
fn on_disconnect(&self, socket: &Socket<Self>) {
println!("socket disconnect {}", socket.sid);
}
fn on_message(&self, msg: String, socket: &Socket<Self>) {
println!("Ping pong message {:?}", msg);
socket.emit(msg).ok();
}
fn on_binary(&self, data: Vec<u8>, socket: &Socket<Self>) {
println!("Ping pong binary message {:?}", data);
socket.emit_binary(data).ok();
}
}
async fn main() -> Result<(), Box
info!("Starting server");
let app = axum::Router::new()
.route("/", get(|| async { "Hello, World!" }))
.layer(EngineIoLayer::new(MyHandler));
Server::bind(&"0.0.0.0:3000".parse().unwrap())
.serve(app.into_make_service())
.await?;
Ok(())
} ```