前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【大家的项目】ws-tool 0.3.0 发布

【大家的项目】ws-tool 0.3.0 发布

作者头像
MikeLoveRust
发布2021-12-01 21:22:28
5650
发布2021-12-01 21:22:28
举报

大家好, ws-tool 项目 0.3.0 版本发布了, ws-tool 是一个基于 tokio 的 rust websocket 库, 你可以用它来创建客户端或服务端. 相比于 0.2 版本, 0.3 对接口进行了重构, 使其更方便使用. 目前提供功能有

  • http/socks5 代理支持
  • client/server 支持
  • 支持获取的消息类型包括最底层的websocket frame(数据包), BytesMut(二进制数据)和 String(最常用类型)
  • 支持类似与 tcpstream 一样的 split 方法, 将 websocket 连接切成 readable 和 writeable, 充分利用 websocket 全双工的特性
  • 支持自定义client/server协议握手处理方法, 你可以在这些方法里处理握手请求header, 返回特定消息Codec
  • 支持自定义 Encoder/Decoder, 方便将数据直接转化成期望的数据类型
  • 标准 autobahn test suit client 测试用例通过率 90%+

example

客户端例子, 来自 echo 省略准备的代码, 创建一个 websocket 代码如下

代码语言:javascript
复制
let mut builder = ClientBuilder::new(&args.uri);
if let Some(cert) = args.cert {
    builder = builder.cert(cert);
}
if let Some(proxy) = args.proxy {
    builder = builder.proxy(&proxy)
}
let mut client = builder
    .connect_with_check(default_string_check_fn)
    .await
    .unwrap();

while let Some(Ok((_, msg))) = client.next().await {
    // read write message here
}

服务端例子, 来自server 同样省略了一些准备代码

代码语言:javascript
复制
    for (stream, addr) in listener.accept().await {
        tracing::info!("got connect from {:?}", addr);
        let mut server = ServerBuilder::accept(
            stream,
            default_handshake_handler,
            default_string_codec_factory,
        )
        .await
        .unwrap();
        while let Some(Ok((code, msg))) = server.next().await {
            if code == OpCode::Close {
                break;
            }
            server.send(msg).await.unwrap();
        }

使用代理的例子可以参考 binance

split 客户端的例子可以参考 split_binance

欢迎提issue或PR

https://privaterookie.github.io/ws-tool/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • example
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档