#drop #sockets #delay #determine #future #backoff

reconnecting-websocket

gloo::net::websocket::futures::WebSocket 的包装器,当套接字断开连接时重新连接。使用 exponential-backoff::Backoff 来确定重新连接之间的延迟

5 个不稳定版本

0.3.2 2024 年 7 月 26 日
0.3.1 2024 年 7 月 21 日
0.3.0 2024 年 7 月 15 日
0.2.0 2024 年 7 月 15 日
0.1.0 2024 年 7 月 14 日

54WebSocket

Download history 228/week @ 2024-07-12 89/week @ 2024-07-19 128/week @ 2024-07-26 4/week @ 2024-08-02

449 每月下载量

MIT 许可证

52KB
797

Crate Documentation Workflow Status Maintenance

reconnecting-websocket

当套接字断开连接时重新连接的 WebSocket 的包装器。使用 Backoff 来确定重新连接之间的延迟

功能

  • tracing - 启用 tracing 包并记录其所有操作
  • state-events - 将流的项目类型更改为枚举,可以是消息或状态更改。两者默认启用

用法

输入意味着您希望从客户端发送到服务器的数据(下溢)

输出意味着您希望从服务器接收回来的数据(源)

  1. 为您的输入类型实现 TryFromMessage
  2. 为您的输出类型实现 TryFrom<Message>
  3. 输入和输出都需要实现 Unpin,如果使用 tracing 功能,则需要实现 Debug
  4. 使用 SocketBuilder 来设置 URL 并配置回退。 get_proto_and_host 可以帮助构建相对于当前 window.location 的 URL。
  5. 调用 SocketBuilder::open 来连接套接字。返回的 open 错误可能是致命的(无效的 URL,端口被阻止),请参阅 WebSocket::open 了解详细信息。第一次连接在构建器中完成,如果发生这些致命错误则快速失败,但同类型的错误也可能在任何重连中发生,并由 SocketStream 实现返回。
  6. 返回的 Socket 可以被轮询以获取传入的消息。可以调用 Socket::send 来发送消息,或者使用 Socket::get_sender 来获取一个 UnboundedSender。调用 Socket::close 或丢弃它将丢弃内部的 WebSocket,它发送一个关闭帧并清理事件处理器。

示例

tests/reconnect.rs

文档

代码文档

许可证

MIT

依赖关系

~15MB
~271K SLoC