// 创建传输层(QUIC 和 TCP)
fn create_transport(keypair: &identity::Keypair) -> Result<libp2p::core::transport::Boxed<(PeerId, libp2p::core::muxing::StreamMuxerBox)>, Box<dyn Error>> {
// 配置 QUIC 传输
let quic_transport = quic::async_std::Transport::new(quic::Config::new(keypair))
.map(|(peer_id, conn), _| (peer_id, libp2p::core::muxing::StreamMuxerBox::new(conn)));
// 配置 TCP 传输(带 Noise 加密和 Yamux 多路复用)
let tcp_transport = tcp::async_io::Transport::new(tcp::Config::default().nodelay(true))
.upgrade(libp2p::core::upgrade::Version::V1)
.authenticate(noise::Config::new(keypair)?)
.multiplex(libp2p::yamux::Config::default())
.map(|(peer_id, conn), _| (peer_id, libp2p::core::muxing::StreamMuxerBox::new(conn)));
// 组合两种传输方式(QUIC 优先,TCP 作为备选)
Ok(libp2p::core::transport::OrTransport::new(quic_transport, tcp_transport)
.map(|either, _| match either {
libp2p::futures::future::Either::Left((peer_id, conn)) => (peer_id, conn),
libp2p::futures::future::Either::Right((peer_id, conn)) => (peer_id, conn),
})
.boxed())
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.