4 个版本
0.2.1 | 2022年3月19日 |
---|---|
0.2.0 | 2021年5月24日 |
0.1.1 | 2021年5月5日 |
0.1.0 | 2021年5月5日 |
#646 in 异步
40KB
453 行
msq-rs
Rust 库实现旧版 Master 服务器查询协议。
用法
将此内容添加到您的 Cargo.toml
[dependencies]
msq = "0.2"
如果您想直接从最新的主分支获取
[dependencies]
msq = { git = "https://github.com/nullsystem/msq-rs.git" }
要开始使用 msq,请参阅下面的快速入门部分,并查看 文档(稳定版)。
功能
默认情况下,包括异步 MSQClient
和非异步/阻塞的 MSQClientBlock
。但是,如果您只想包含其中一个,可以执行以下操作
仅针对非异步/MSQClientBlock
[dependencies]
msq = { version = "0.2", default-features = false, features = ["non-async"] }
仅针对异步/MSQClient
[dependencies]
msq = { version = "0.2", default-features = false, features = ["async"] }
快速入门
use msq::{MSQClient, Region, Filter};
use std::io::Result;
#[tokio::main]
async fn main() -> Result<()> {
// Startup the client
let mut client = MSQClient::new().await?;
// Connect to the master server
client.connect("hl2master.steampowered.com:27011").await?;
// Maximum amount of servers we wanted to query
client.max_servers_on_query(256);
let servers = client
.query(Region::Europe, // Restrict query to Europe region
Filter::new() // Create a Filter builder
.appid(240) // appid of 240 (CS:S)
.nand() // Start of NAND special filter
.map("de_dust2") // Map is de_dust2
.empty(true) // Server is empty
.end() // End of NAND special filter
.gametype(&vec!["friendlyfire", "alltalk"])).await?;
// nand filter excludes servers that has de_dust2 as
// its map and is empty
// nand and nor are both special filters, both closed by
// using the end method
Ok(())
}
阻塞/非异步版本
如果您不想使用异步,则可使用阻塞版本。其方法和名称应与其异步对应版本匹配。
use msq::{MSQClientBlock, Region, Filter};
use std::io::Result;
fn main() -> Result<()> {
let mut client = MSQClientBlock::new()?;
client.connect("hl2master.steampowered.com:27011")?;
client.max_servers_on_query(256);
let servers = client
.query(Region::Europe, // Restrict query to Europe region
Filter::new() // Create a Filter builder
.appid(240) // appid of 240 (CS:S)
.nand() // Start of NAND special filter
.map("de_dust2") // Map is de_dust2
.empty(true) // Server is empty
.end() // End of NAND special filter
.gametype(&vec!["friendlyfire", "alltalk"]))?;
Ok(())
}
API 变更
从 v0.1.X 到 v0.2.X
- 已移除:模块
msq::region
和msq::filter
不再公开。只需直接使用msq::Region
枚举和msq::Filter
结构体即可。 - 替换:在
msq::Filter
中,用as_string
替换as_str
。 - 新增:在
msq::MSQClient
和msq::MSQClientBlock
中新增single_query
方法,用于在一个函数中执行单个查询 - 新增:新增了非异步版本的
msq::MSQClientBlock
- 新增:现在可以定义功能
async
和non-async
。默认情况下都启用。
许可证
msq-rs 采用 MIT 许可证 发布。
依赖项
杂项
以下库与该库配合良好
- A2S 查询的源: a2s-rs
依赖项
~0–11MB
~77K SLoC