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 在 网络编程 中
每月 7,153 次下载
在 15 个 包中使用 15 包(13 个直接使用)
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 版,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则您有意提交给此项目的任何贡献,根据 Apache-2.0 许可证定义,应双重许可,如上所述,无任何附加条款或条件。
依赖关系
~39–87MB
~1.5M SLoC