#websocket-server #async #framework #tokio

blunt

使用 Rust 构建异步 WebSocket 服务器的强观点方式

8 个版本

0.0.8 2021 年 7 月 25 日
0.0.7 2021 年 6 月 23 日
0.0.4 2021 年 4 月 27 日

240WebSocket

每月 39 次下载

MIT OR Apache-2.0 OR MPL-2.0

38KB
779

Blunt

github crates.io docs.rs build status

使用 Rust 构建异步 WebSocket 服务器的强观点方式

如何

世界著名的例子,回声服务器

#[tokio::main]
async fn main() -> Result<()> {
    let handler = EchoServer::default();
    ::blunt::builder()
        .for_path("/echo", handler)
        .build()
        .bind("127.0.0.1:3000".parse().expect("Socket Addr"))
        .await?
    
    // now connect your clients to http://127.0.0.1:3000/echo and say something!
}

#[derive(Debug, Default)]
pub struct EchoServer;

#[blunt::async_trait]
impl WebSocketHandler for EchoServer {
    async fn on_open(&mut self, ws: &WebSocketSession) {
        info!("new connection open with id: {}", ws.id());
    }

    async fn on_message(&mut self, ws: &WebSocketSession, msg: WebSocketMessage) {
        ws.send(msg).expect("Unable to send message");
    }

    async fn on_close(&mut self, ws: &WebSocketSession, _msg: WebSocketMessage) {
        info!("connection closed for session id {}", ws.id());
    }
}

更多代码示例请参阅 示例 文件夹。

许可证

在您的选择下,Apache License, Version 2.0、MIT 许可证或 MPL-2.0 许可证下进行三许可。

除非您明确声明,否则您有意提交以包含在此软件包中的任何贡献,根据 Apache-2.0 许可证定义,将按上述方式三许可,不附加任何额外的条款或条件。

依赖关系

~8–18MB
~251K SLoC