import {
"q2316367743/moonhttp/sse",
}| 字段 | 说明 |
|---|---|
| event | 事件类型,来自 event: 字段;流里没给过就是规范默认的 "message" |
| data | 事件数据,来自 data: 字段;同一事件的多条 data: 行用 \n 连接 |
| id | 最近一次 id: 的值;None 表示流里还没出现过 |
| retry | 最近一次 retry: 的毫秒值;None 表示流里还没出现过 |
| 方法 | 说明 |
|---|---|
| SseParser::new() | 干净状态:没有事件,也没有 ID / 重连间隔 |
| push(chunk) | 喂一块字节;完整的事件进内部队列 |
| next() | 取一个已解析完的事件,没有就 None——None 不代表流结束,可能只是数据还没到齐 |
| finish() | 告诉解析器「流到此结束」(读到 EOF 时调用一次),处理末尾那个卡住的裸 CR;未以空行收尾的半行按规范丢弃。重复调用安全 |
let parser = @sse.SseParser::new()
parser.push(chunk1)
parser.push(chunk2) // 一块含 0 个、1 个或多个事件都行;事件也可能横跨多块
while parser.next() is Some(event) {
println(event.event + ": " + event.data)
}
parser.finish()pub struct SseParser {
// private fields
}Install
Download zipaxios 风格的 MoonBit HTTP 客户端:实例与配置合并、四种请求体形态、流式与 SSE、自动重定向
Dependencies