#ws #websocket-client #communication #server #client-server #tcp #sockets

web-socket

客户端和服务器端最快的WebSocket实现

4个版本 (2个破坏性更新)

0.7.0 2023年5月7日
0.6.0 2023年3月30日
0.5.1 2023年3月28日
0.4.2 2023年3月8日
0.1.0 2022年10月28日

#8 in #ws

Download history 153/week @ 2024-03-10 142/week @ 2024-03-17 3/week @ 2024-03-24 118/week @ 2024-03-31 85/week @ 2024-04-07 62/week @ 2024-04-14 348/week @ 2024-04-21 71/week @ 2024-04-28 69/week @ 2024-05-05 252/week @ 2024-05-12 250/week @ 2024-05-19 112/week @ 2024-05-26 122/week @ 2024-06-02 1/week @ 2024-06-09 8/week @ 2024-06-16 5/week @ 2024-06-23

每月139次下载

Apache-2.0

27KB
466

简介

这个库是WebSocket协议的实现,该协议提供了一种在单个TCP连接上客户端和服务器之间双向通信的方式。此库为客户端和服务器端应用程序提供最快和直观的WebSocket实现。

安装

要使用此库,请将其添加到Rust项目的依赖项中,在您的Cargo.toml文件中添加以下行

[dependencies]
web-socket = "0.7"

示例

您可以使用以下命令运行此示例: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
}

有关更多示例,请参阅./examples目录。

它通过了autobahn测试套件的所有测试。

许可证

本项目受Apache License 2.0许可。

依赖关系

~2.4–3.5MB
~54K SLoC