6 个版本
0.3.0 | 2020 年 3 月 21 日 |
---|---|
0.2.2 | 2020 年 3 月 21 日 |
0.1.1 | 2020 年 3 月 20 日 |
#9 在 #irc 客户端 中
35KB
912 行
IRC3 for Rust
好的,适合人类的 Rusty IRC。
免责声明
如果你在寻找一个经过时间考验的库,那么 irc3
不适合你。每天都会发布带有新错误和其他可怕问题的版本。请查看 irc 仓库。否则,祝你好运,享受调试!
编写简单的 ping 器
开始安装 irc3 和异步运行时(本例中为 tokio)。你还需要 futures 抽象来直接与 Stream
/Sink
API 交互。
irc3 = "0.2"
tokio = "0.2"
futures = "0.3"
首先创建一个 非安全 客户端,使用 Client::new(...)
,然后发送任何必要的认证消息(例如 PASS
、NICK 和
USER
)。然后,监听任何包含 PING
命令的传入消息,并使用 PONG
命令回复。命令看起来可能像这样
> PING :tmi.twitch.tv
< PONG :tmi.twitch.tv
你可以在 Rust 中实现它
extern crate tokio;
extern crate irc3;
extern crate futures;
use std::env::var;
use irc3::Client;
use futures::stream::StreamExt as _;
use futures::sink::SinkExt as _;
#[tokio::main]
async fn main() {
// build a client
let mut client = Client::new("irc.chat.twitch.tv").await.unwrap();
client.send(Message::new("PASS").with_param(&var("IRC3_RS_PASSWORD").unwrap())).await.unwrap();
client.send(Message::new("NICK").with_param(&var("IRC3_RS_NICKNAME").unwrap())).await.unwrap();
loop {
let message = match client.next().await {
Some(res) => res,
None => break,
}.unwrap();
if message.command() == "PING" {
client.send(Message::new("PONG").with_param(message.params().last().unwrap())).await.unwrap();
}
}
}
SSL 连接
你可以使用 Client::new_secure(...)
函数来创建 TLS 加密连接。所有 TLS 都在连接时处理,因此你不需要输入任何额外的内容。
编写服务器
irc3 仓库希望支持服务器,但代码还没有。然而,技术是存在的。使用 MessageTransport
结构体,你可以等待并接受来自客户端的连接。
如果你想要 Server
抽象,请稍后再来!或者,你可以 加入我们 帮助!
依赖项
~5–19MB
~243K SLoC