23 个版本 (破坏性更新)

新版本 0.23.0 2024 年 8 月 20 日
0.21.0 2024 年 7 月 22 日
0.13.0 2024 年 3 月 25 日
0.12.0 2023 年 12 月 20 日
0.5.1 2023 年 7 月 18 日

1615网络编程

Download history 1058/week @ 2024-04-29 630/week @ 2024-05-06 1509/week @ 2024-05-13 1321/week @ 2024-05-20 941/week @ 2024-05-27 1767/week @ 2024-06-03 648/week @ 2024-06-10 973/week @ 2024-06-17 990/week @ 2024-06-24 980/week @ 2024-07-01 1556/week @ 2024-07-08 673/week @ 2024-07-15 1312/week @ 2024-07-22 1602/week @ 2024-07-29 2270/week @ 2024-08-05 1899/week @ 2024-08-12

每月 7,153 次下载
15 包中使用 15 包(13 个直接使用)

MIT/Apache

1.5MB
26K SLoC

iroh-net

该包包含 iroh 的网络支持。Iroh 网络建立在直接点对点 QUIC 连接之上,这些连接使用中继和打孔。连接的主要结构是 Endpoint 入口。

通过一个 中继服务器 的帮助建立点对点连接。中继服务器为对等方提供 NAT (STUN) 以及使用 DERP 协议(为加密数据包指定的中继协议)进行连接协调。如果无法建立直接连接,则通过服务器中继连接。

在连接之前,对等方必须知道并验证彼此的 PeerID。当使用中继服务器帮助建立连接时,他们将通过其公钥在主中继服务器上注册。无法建立直接连接的其他对等方可以通过此中继服务器建立连接。这将尝试使用 STUN 和打孔建立直接连接,但如果不成功,将继续中继。

对等方也可以不使用中继服务器直接连接。然而,对于监听的对等方,连接对等方必须能够通过其地址之一直接到达。

示例

iroh-net 的示例在 iroh-net/examples 中,使用 cargo run --example $NAME 运行它们。每个示例的详细信息在文件/目录本身中。

结构化事件

该库使用 tracing 用于日志记录以及结构化事件。事件与传统日志的不同之处在于约定

  • 目标events 为前缀,目标名称是点分隔的。

    对于这个库,目标总是以 events.net. 开头。

  • 没有消息。

    每个事件都有一个唯一的 目标,表示其含义。

  • 事件 字段 仅用于结构化数据。

  • 级别总是 DEBUG

使用事件

如果需要,应用程序可以使用 events.* 目标,由不同的订阅者处理事件。然而,使用默认文件记录,已经可以轻松地搜索所有事件,例如使用 ripgrep

rg'events\.[a-z_\-.]+'path/to/iroh/logs/iroh.YYYY-MM-DD-NN.log

这将默认在支持颜色的终端上突出显示完整的目标名称。

开发

请谨慎添加新事件。事件旨在具有高信号与噪声比。事件应设计为能够自动提取。如果需要关联多个事件,可以使用具有特殊值的字段。

为了使事件与代码中的正常日志区分开来,建议使用 event!() 宏来编写

event!(
    target: "event.net.subject",
    Level::DEBUG,
    field = value,
);

许可证

该项目受以下之一许可:

任选其一。

贡献

除非您明确声明,否则您有意提交给此项目的任何贡献,根据 Apache-2.0 许可证定义,应双重许可,如上所述,无任何附加条款或条件。

依赖关系

~39–87MB
~1.5M SLoC