4个版本
0.3.0 | 2019年4月13日 |
---|---|
0.2.3 | 2019年3月24日 |
0.2.1 | 2019年3月17日 |
0.2.0 | 2019年3月11日 |
#8 in #shard
在 spectacles 中使用
130KB
2.5K SLoC
Spectacles Gateway
用于Rust的丰富Spectacles网关客户端。
关于
此包允许您与Discord网关交互。有关如何使用此包的更多信息,请参阅Discord网关文档。
功能
- 异步WebSocket消息处理。
- 零停机时间分片创建。
- 与spectacles-brokers包无缝集成。
示例 - 基础分片器
use std::env::var;
use spectacles_gateway::{ShardManager, ShardStrategy};
use spectacles_model::gateway::ReceivePacket;
use futures::future::Future;
fn main() {
let token = var("DISCORD_TOKEN").expect("No Discord Token was provided.");
// tokio.run() boostraps our Tokio application.
tokio::run(ShardManager::new(token, ShardStrategy::Recommended)
.map(|mut manager| {
// The start_spawn() method returns a tuple of async streams, for handling spawned shards and shard events.
let (spawner, events) = manager.start_spawn();
// Now, we poll the streams concurrently in separate threads.
tokio::spawn(spawner.for_each(|shard| {
println!("Shard {:?} has successfully spawned.", shard.lock().info);
Ok(())
}));
tokio::spawn(events.for_each(|event| {
if let Some(evt) = event.packet.t {
println!("Received event from Shard {:?}: {:?}", event.shard.lock().info, evt);
};
Ok(())
}));
})
.map_err(|err| {
eprintln!("Failed to bootstrap sharding manager. {:?}", err);
})
);
}
依赖项
~19–30MB
~543K SLoC