This library provide WebSocket implementation for both client and server.
```rust use web_socket::{WebSocket, DataType};
let mut ws = WebSocket::connect("ws://example.com/chat").await?; ws.send(getdatasomehow()).await?;
loop { let mut data = ws.recv().await?;
let mut buf = vec![];
data.read_to_end(&mut buf).await?;
match data.ty {
DataType::Binary => println!("Data: {buf:?}"),
DataType::Text => println!("Text: {:?}", String::from_utf8(buf)),
}
} ```
```rust use web_socket::{WebSocket, Event};
let mut ws = WebSocket::connect("ws://ws.ifelse.io").await?;
ws.onevent = Box::new(|ev| { if let Event::Pong() = ev { println!("Pong: {}", ev.to_string()); } Ok(()) });
for _ in 0..5 { ws.send(Event::Ping(b"Hello!")).await?; ws.send("Copy Cat!").await?;
let mut data = ws.recv().await?;
let mut buf = vec![];
data.read_to_end(&mut buf).await?;
println!("Text: {:?}", String::from_utf8(buf));
} ```
You can run this example by: cargo run --example ping_pong