Expand description
sculk:面向 Minecraft 联机的 P2P 隧道库。
基于 iroh 提供端到端加密的 QUIC 连接,
封装了 host/join 双端流程、分享 URI、事件流与自动重连能力。
§Overview
minecraft::probe_server:探测本机 Minecraft Java 版服务。minecraft::lan:扫描原版 LAN 公告或向本机客户端发布隧道入口。tunnel::IrohTunnel:创建 host 或 join 隧道。tunnel::TunnelService:托管单条隧道的生命周期、状态与多调用方事件订阅。tunnel::JoinUri:sculk://join/v1/分享 URI。tunnel::HostConfig/tunnel::JoinConfig:分端配置。tunnel::TunnelEvent:运行时状态与错误事件。
§Examples
Host 端:
use sculk::tunnel::{AccessToken, HostConfig, IrohTunnel, ServiceId};
let (_tunnel, uri, _events) = IrohTunnel::host(
25565,
None,
None,
ServiceId::generate(),
AccessToken::generate(),
HostConfig::default(),
).await?;
println!("share URI: {}", uri.expose_secret_uri()?);Join 端:
use sculk::tunnel::{JoinOptions, JoinUri, TunnelService};
let uri: JoinUri = "sculk://join/v1/<payload>".parse()?;
let service = TunnelService::new();
service.start_join(JoinOptions::new(uri)).await?;§Notes
HostConfig::max_players按唯一EndpointId计数。- 分享 URI 包含当前会话访问令牌,不应写入日志或持久化配置。
join侧的自动重连等待时间由JoinConfig::reconnect_timeout控制。- 简单集成优先使用
TunnelService;需要直接拥有事件接收端时使用IrohTunnel。
Re-exports§
pub use error::ErrorCategory;pub use error::Result;pub use error::SculkError;pub use types::RelayUrl;pub use types::SecretKey;
Modules§
- error
- core crate 统一错误类型。
- minecraft
- Minecraft Java 版服务探测与局域网发现支持。
- tunnel
- P2P 隧道:基于 iroh QUIC 的 TCP 端口转发层。
- types
- 对 iroh 公共类型的 newtype 封装。
Constants§
- DEFAULT_
INLET_ PORT - join 端本地入站监听端口默认值。
- DEFAULT_
MC_ PORT - Minecraft 服务端标准端口。