Vox1000 —— 六边形 p2p 连接框架(KCP 独苗 + secchan 上座;core 零依赖,wire 全自研,层界即开源界)
| 包 | 内容 |
|---|---|
| thy1016/vox1000/core | 六边形核心:纯 ADT 域 + 三 port(SeamNet / PeerDiscovery / ProtocolHandler)+ PunchEngine 打洞策略口(NatShape 判形 → PunchRecipe 配方映射 + 超集状态机阶段词)+ 连接状态机 + MagicSocket/Node 门面 |
| thy1016/vox1000/adapter/sim | 确定性时钟 + 内存布线(SimFabric),编排回放测试基建 |
| thy1016/vox1000/adapter/kcp | KCP 可靠泳道(KcpLane)+ 实 UDP 缝(UdpSeam),驱动 moonkcp 纯核 |
| thy1016/vox1000/adapter/nat | NAT 面:mini-STUN/Natcheck 发现(NatcheckDiscovery)+ 打洞驱动(PunchSession/PunchMount,moonnat NatPump 径) |
| thy1016/vox1000/adapter/relay | 中继承载(RelayCarrier)+ 打洞装配(PunchMount 布线),驱动 moonrelay |
| thy1016/vox1000/adapter/gate_moongard | 授权面 adapter:moongard token 接入 CallGate 方言 |
| thy1016/vox1000/examples/ | 绿门三对打 demo(真 UDP + 加密握手 + 协议路由 + 可靠流;t5 公网三门 relay/punch/full) |
moon add thy1016/vox1000// 布线:内存缝 + 发现;身份:32 字节种子出 PeerId(ed25519)
let fabric = @sim.SimFabric::new()
let psk = Bytes::make(32, b'\x77') // 保密面:PSK-CR + 记录层
let peer_a = @core.peer_id_from_seed(Bytes::from_array(Array::make(32, 1)))
let peer_b = @core.peer_id_from_seed(Bytes::from_array(Array::make(32, 2)))
// 构造错误(端点非法等)以 raise P2pError 报
let node_a = @core.Node::new(
seam=@sim.SimNode::new(fabric~, addr=@core.Endpoint::LocalIpv4("10.0.0.1", 5001)),
discovery=@core.MemoryDiscovery::new(now=fn() { 0L }, default_ttl_ms=60000L),
local_peer=peer_a,
psk~,
)
let node_b = @core.Node::new(
seam=@sim.SimNode::new(fabric~, addr=@core.Endpoint::LocalIpv4("10.0.0.2", 5002)),
discovery=..., local_peer=peer_b, psk~,
)
// 应门:注册协议处理器(协议 = 连接级,无每流协商)
node_b.handle_protocol(
protocol=@core.ProtocolId::parse("echo/1"),
handler=EchoHandler,
)
// 呼叫:认证通过才有连接返回,失败即 raise P2pError——
// 未认证可收发的连接态不存在
let conn = node_a.connect(peer_b, @core.ProtocolId::parse("echo/1"))cd vox1000 && moon run examples/green_door3 --target nativeInstall
Download zipVox1000 —— 六边形 p2p 连接框架(KCP 独苗 + secchan 上座;core 零依赖,wire 全自研,层界即开源界)