4 releases (2 breaking)
0.7.0 | May 7, 2023 |
---|---|
0.6.0 | Mar 30, 2023 |
0.5.1 | Mar 28, 2023 |
0.4.2 |
|
0.1.0 |
|
#330 in WebSocket
227 downloads per month
Used in 2 crates
(via web-socket-io)
27KB
466 lines
Introduction
This library is an implementation of the WebSocket protocol, which provides a way for two-way communication between a client and server over a single TCP connection. This library provides fastest and intuitive WebSocket implementation for both client and server-side applications.
Installation
To use this library, add it as a dependency to your Rust project by adding the following line to your Cargo.toml
file:
[dependencies]
web-socket = "0.7"
Example
You can run this example with: cargo run --example minimal
use tokio::io::*;
use web_socket::*;
async fn example<IO>(mut ws: WebSocket<IO>) -> Result<()>
where
IO: Unpin + AsyncRead + AsyncWrite,
{
for _ in 0..3 {
ws.send("Copy Cat!").await?;
match ws.recv_event().await? {
Event::Data { ty, data } => {
assert!(matches!(ty, DataType::Complete(MessageType::Text)));
assert_eq!(&*data, b"Copy Cat!");
}
Event::Ping(data) => ws.send_pong(data).await?,
Event::Pong(..) => {}
Event::Error(..) => return ws.close(CloseCode::ProtocolError).await,
Event::Close { .. } => return ws.close(()).await,
}
}
ws.close("bye!").await
}
For more examples, see ./examples directory.
It passed all test of the autobahn testsuite
License
This project is licensed under Apache License 2.0
Dependencies
~2.4–8MB
~55K SLoC