推送与订阅

Web Push(VAPID)、订阅 API 与相关模型。

概览

使用 Web Push,公钥由接口下发。

路由作用
GET /api/vapid-public-key下发 VAPID 公钥 供 pushManager.subscribe
POST /api/notifications/subscribe保存 PushSubscription;可选 Binance Alpha、网站提醒;支持登录 uuid 或 anonymousId
POST /api/notifications/unsubscribe取消订阅
GET /api/notifications/check检查状态
POST /api/notifications/migrate订阅数据迁移

业务:src/services/push-notification.ts;模型 src/models/notification.ts 等。

数据流

  1. 拉取 /api/vapid-public-key。
  2. 浏览器生成 subscription → POST /api/notifications/subscribe。
  3. 服务端持久化;定时任务或事件侧发推送(见 cron 文档中的提醒类任务)。

关键文件

  • src/app/api/vapid-public-key/route.ts
  • src/app/api/notifications/**
  • src/services/push-notification.ts
  • src/models/notification.ts

Dependencies

环境变量

  • NEXT_PUBLIC_VAPID_PUBLIC_KEY — /api/vapid-public-key 返回给浏览器。
  • VAPID_PRIVATE_KEY、VAPID_SUBJECT — 服务端 Web Push(src/services/push-notification.ts)。

数据库(src/db/schema.ts)

  • push_subscriptions、binance_alpha_subscriptions、website_reminder_subscriptions
推送与订阅 | 追踪狗文档