Route Handler · 投递与流式连接

Webhook 与 SSE 可靠性实验台

分别模拟“外部系统推送一次请求”和“浏览器保持一条事件流”,观察验签、去重、快速确认、续传、心跳与清理的边界。

全部为客户端本地模拟
不会发送网络请求

构造一次 Webhook 投递

签名必须基于原始正文校验,不能先 JSON.parse。

投递状态

HTTP 响应等待投递
持久化 Delivery ID1 条
队列待消费0 条
后台业务序号期待事件 2

Webhook 生命周期

HTTP 快速确认与后台慢任务是两条不同时间线。

  1. request.text()

    ○ 未执行

    读取原始正文。

  2. HMAC 验签

    ○ 未执行

    在 JSON.parse 之前。

  3. Schema 验证

    ○ 未执行

    验签后再解析字段。

  4. 持久化去重

    ○ 未执行

    数据库唯一约束。

  5. 写入队列

    ○ 未执行

    慢任务脱离请求。

  6. 快速返回 2xx

    ○ 未执行

    不等待后台消费。

  7. 后台消费者(worker)

    ○ 未执行

    异步处理与重试。

原始请求体

模拟 request.text()
等待投递。

快速响应

与慢任务解耦
尚未响应

有效新事件会先入队,再立即返回 2xx。

持久化去重与队列

真实系统使用数据库唯一约束
  • delivery-seen-001(已处理)

队列

  • 队列为空

结构化日志

仅 request_id / delivery_id / status / action / duration_ms
  • 等待生成日志

Webhook 一键挑战