推送与订阅
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 等。
数据流
- 拉取
/api/vapid-public-key。 - 浏览器生成 subscription → POST
/api/notifications/subscribe。 - 服务端持久化;定时任务或事件侧发推送(见 cron 文档中的提醒类任务)。
关键文件
src/app/api/vapid-public-key/route.tssrc/app/api/notifications/**src/services/push-notification.tssrc/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