Cro – Raku 中的优雅响应式服务

Hacker News Top 工具

摘要

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)

相似文章

Rip 语言:编译到 ES2022,内置响应式

Hacker News Top

Rip 是一门受 CoffeeScript 启发的新语言,可编译为 ES2022 JavaScript,自带响应式系统、十余种新运算符,并拥有零依赖的自托管编译器。

tokio-rs/topcoat

GitHub Trending (daily)

Topcoat 是一个模块化、开箱即用的 Rust 框架,用于构建全栈应用,支持服务端渲染和客户端响应式,无需独立的 API 层。