ws-tool 0.10 发布了, 主要内容有
- 这个版本修复之前的一些bug, autobahn 测试也已回归到之前的通过率
- 内部api里去掉bytes库依赖, 解析消息时不再进行原子操作, 进一步提升吞吐量
- message api 现在提供 Cow str 或 &[u8], 某些情况下可以避免之前版本 clone 引入的内存分配, 进一步增加性能
- 提供了更简单的创建客户端函数, ClientConfig::connect, 通过这个方法即可通过创建自动检测deflate扩展, wss 连接, 自定义buffer大小的客户端.
- 集成到poem, 对于 server 端, 添加了poem集成, 方便在现有项目下添加 websocket 功能
以下是根据连接 url 获取 echo 前缀的 echo server 例子
#[handler]
async fn test(Path(prefix): Path<String>, req: &poem::Request) -> impl IntoResponse {
ws_tool::extension::poem_ext::adapt(
req,
default_handshake_handler,
|req, upgraded| async move {
let mut client = AsyncStringCodec::factory(req, upgraded).unwrap();
loop {
let msg = client.receive().await.unwrap();
if msg.code.is_close() {
info!("peer send close: {}", msg.data);
break;
}
let echo = format!("{}: {}", prefix, msg.data);
client.send(&echo).await.unwrap()
}
},
)
.await
}
let app = Route::new().at("/demo/:prefix", get(test));
完整代码可以在 examples/poem 找到
Ext Link: https://github.com/PrivateRookie/ws-tool/tree/main
1
共 0 条评论, 1 页
评论区
写评论还没有评论