#websocket-server #websocket-client #hyper #升级 #低开销 #websocket-lite

hyper-websocket-lite

基于hyper和websocket-lite的WebSocket服务器实现

4个版本

0.5.0 2020年12月24日
0.3.5 2020年6月28日
0.3.4 2020年4月30日
0.3.3 2020年3月1日

WebSocket 中排名 303

Download history 4/week @ 2024-03-12 6/week @ 2024-03-26 20/week @ 2024-04-02

每月下载量 108
webwire 中使用

MIT 许可证

48KB
977

websocket-lite

CI

此仓库包含三个crate

  • websocket-lite,一个快速、低开销的异步WebSocket客户端
  • websocket-codec,WebSocket协议的Tokio编解码器实现
  • hyper-websocket-lite,hyper服务器和websocket-codec之间的绑定

websocket-lite

文档 | 源代码

此crate针对长时间接收大量消息进行了优化。一个关键特性是,一旦建立连接并发送和接收了初始消息,它就不会进行内存分配;它重用一对缓冲区,大小为迄今为止最长的消息。

此crate提供同步和异步,基于tokio的功能。`ssl-native-tls`、`ssl-rustls-native-roots`和`ssl-rustls-webpki-roots`功能标志为`wss://...`服务器提供TLS功能。

此crate完全符合Autobahn测试套件中的fuzzingserver模块。

websocket-codec

文档 | 源代码

这是一个独立的crate,不直接执行任何I/O。对于完整的WebSocket客户端,请参阅websocket-lite crate。

hyper-websocket-lite

文档 | 源代码

提供`server_upgrade`函数,它将客户端的HTTP升级请求桥接到WebSocket协议。

额外的命令行工具

  • wsinspect:查看从二进制文件中获取的WebSocket协议级帧数据。
    cargo run --example wsinspect -- --help
    
  • wsdump:是Python包websocket-client中发现的wsdump工具的基本副本。
    cargo run --example wsdump -- --help
    

async/await

版本0.3.2及以上使用std futures和asyncawait关键字。它们基于tokio 0.2和futures 0.3,最早支持的编译器是1.39。版本0.5.0及以上使用tokio 1.x和futures 0.3。

版本0.2.4是async/await之前的版本。它基于tokio 0.1和futures 0.1。


lib.rs:

基于hyper和websocket-lite的WebSocket服务器实现。

依赖项

~5.5–7.5MB
~128K SLoC