Cro – Raku 中的优雅响应式服务
摘要
Cro 是一组用于构建响应式分布式系统的 Raku 库,具备带路由的 HTTP 服务器、WebSocket 支持以及异步管道。
暂无内容
查看缓存全文
缓存时间: 2026/08/03 07:37
# Raku 中的优雅响应式服务
来源:https://cro.raku.org/
## 欢迎使用 Cro
Cro 是一组用于构建响应式分布式系统的库,精心设计以充分利用 Raku 所提供的全部特性。高级 API 让简单的事情变得简单,而 Cro 核心的异步管道概念则让困难的事情成为可能。准备好开始了吗?只需 `zef install --/test cro`,然后查看文档 (https://cro.raku.org/docs)。
- HTTP (https://cro.raku.org/#http)
- Web Socket (https://cro.raku.org/#ws)
- 工具链 (https://cro.raku.org/#tooling)
## 配置路由,并启动服务
```raku
use Cro::HTTP::Router;
use Cro::HTTP::Server;
my $application = route {
get -> 'greet', $name {
content 'text/plain', "Hello, $name!";
}
}
my Cro::Service $hello = Cro::HTTP::Server.new:
:host, :port<10000>, :$application;
$hello.start;
react whenever signal(SIGINT) {
$hello.stop;
exit;
}
```
## 内置 HTTP 服务器
- HTTP/1.1 持久连接
- HTTP/2.0(通过 ALPN 协商使用)
- HTTPS 支持
- 在服务器级别添加中间件
- 配置请求体解析器和序列化器
- 请求分发到线程池,以充分利用多核 CPU
## 灵活的请求路由器
```raku
# Capture/constrain root segments with a signature.
get -> 'product', UUIDv4 $id {
content 'application/json', get-product($id);
}
# Slurp root segments and serve static content
get -> 'css', *@path {
static 'assets/css', @path;
}
# Get stuff from the query string
get -> 'search', :$term! {
content 'application/json', do-search($term);
}
```
## 可插拔的请求体解析与序列化
内置支持 www-form-urlencoded、multipart 和 JSON 请求体——或者插入你自己的请求体解析器和序列化器。
```raku
put -> 'order', UUIDv4 $id {
request-body -> %json-object {
# Save it, and then...
content 'application/json', %json-object;
}
}
```
## 包含 HTTP 客户端
- 用于获取响应和请求体的异步 API(请求体可一次性传递或流式传递)
- 支持 HTTP/1.1 持久连接
- HTTPS,可选自定义证书颁发机构
- HTTP/2.0 支持,带请求多路复用
- 可插拔的请求体解析器/序列化器——与服务器使用的相同——以及中间件支持
上一项 (https://cro.raku.org/#carousel-http)下一项 (https://cro.raku.org/#carousel-http)
## 与 HTTP 路由器巧妙集成
```raku
my $chat = Supplier.new;
get -> 'chat' {
web-socket -> $incoming {
supply {
whenever $incoming -> $message {
$chat.emit(await $message.body-text);
}
whenever $chat -> $text {
emit $text;
}
}
}
}
```
## Web Socket 客户端
Cro 包含一个基于 `Supply` 的 Web 服务客户端。它正是你在服务之间使用 Web Socket、编写 Web Socket 客户端,或为通过 Web Socket 暴露的服务编写集成测试时所需要的。
上一项 (https://cro.raku.org/#carousel-websockets)下一项 (https://cro.raku.org/#carousel-websockets)
相似文章
宣布 Topcoat: 一个使用 Rust 构建全栈响应式 Web 应用程序的框架
Tokio 宣布 Topcoat,一个模块化、开箱即用的 Rust 框架,用于构建全栈响应式 Web 应用程序,完全服务器端渲染,具有类似于 HTMX 的响应式指令。
Rip 语言:编译到 ES2022,内置响应式
Rip 是一门受 CoffeeScript 启发的新语言,可编译为 ES2022 JavaScript,自带响应式系统、十余种新运算符,并拥有零依赖的自托管编译器。
tokio-rs/topcoat
Topcoat 是一个模块化、开箱即用的 Rust 框架,用于构建全栈应用,支持服务端渲染和客户端响应式,无需独立的 API 层。
@yoginth: 今天我推出了 http://rag.computer,这是一个基于 @turbopuffer 构建的开源 RAG 平台,支持快速数据摄入、快速检索……
bigRAG 是一个基于 Turbopuffer 构建的开源 RAG 平台,支持快速数据摄入与检索,并兼容多种文档格式和嵌入模型。
Rive,Go语言中快速可靠的后台任务
River是一个健壮、高性能的Go和Postgres任务处理系统,强调事务性入队以避免分布式系统陷阱。