4个版本 (2个重大更新)
0.3.0 | 2021年4月23日 |
---|---|
0.2.2 | 2021年3月2日 |
0.2.1 | 2021年1月26日 |
0.1.0 | 2021年1月14日 |
#22 in #libp2p
24 每月下载量
用于 libp2p-rs
525KB
9K SLoC
libp2prs-floodsub
基线洪水协议
这是libp2p-rs的官方pubsub实现。
使用方法
步骤1:创建floodsub并获取处理器
let floodsub = FloodSub::new(FloodsubConfig::new(local_peer_id));
let handler = floodsub.handler();
步骤2:将处理器注册到swarm
let swarm = Swarm::new(keys.public())
.with_transport(Box::new(tu))
.with_protocol(Box::new(handler))
.with_ping(PingConfig::new().with_unsolicited(true).with_interval(Duration::from_secs(1)))
.with_identify(IdentifyConfig::new(false));
步骤3:获取floodsub控制和然后使用swarm控制启动
let floodsub_control = floodsub.control();
floodsub.start(swarm.control());
步骤4:启动swarm
// listen on
swarm.listen_on(vec![listen_addr]).unwrap();
// start swarm
swarm.start();
// new connection
swarm_control.new_connection(remote_peer_id).await.unwrap();
步骤5:发布/订阅/ls/getPeers
订阅
task::spawn(async move {
let sub = control.subscribe(b"test").await;
if let Some(mut sub) = sub {
loop {
if let Some(msg) = sub.ch.next().await { log::info!("recived: {:?}", msg.data) }
}
}
});
发布
floodsub_control.publish(Topic::new(b"test"), msg).await;
ls
floodsub_control.ls().await;
getPeers
floodsub_control.get_peers(Topic::new(b"test"));
待办事项列表
- 配置项:签名严格
- 过滤重复消息以防止过度洪水
- 黑名单
依赖关系
~19–36MB
~617K SLoC