Files
medical-mall/server/消息推送文档/README.md
2026-03-16 14:58:00 +08:00

84 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
本文件为消息推送Push Server与云函数投递的精简说明聚焦该服务的职责、运行要点、快速启动命令与云函数调用约定。
目标读者:后端开发、联调/运维人员。更详细的实现细节请参考对应子文档与源码链接(下文有指引)。
概览
- 组件:
- webhook-receiver接收第三方物流回调并写入 `platform_express_*`(见 pages/mall/delivery/webhook-server
- notify-worker`notify_queue` 生成 `express_notifications`(消息中心记录)。
- push-server管理设备 CID、入队通知、消费者轮询并调用云函数下发推送见 server/push-server.js
运行要点(快速)
- 一键启动Windows PowerShell
```powershell
powershell -ExecutionPolicy Bypass -File .\server\scripts\start-delivery-backend.ps1
```
- 停止:
```powershell
powershell -ExecutionPolicy Bypass -File .\server\scripts\stop-delivery-backend.ps1
```
脚本说明Windows PowerShell 5.1
- PID 文件:`server/.runtime/delivery-backend.pids.json`(由 start 脚本写入UTF-8 无 BOM
- stop 脚本优先按 PID 停止异常时会兜底释放端口7201/7301
- 不停止直接重复启动,常见会报端口占用(`EADDRINUSE`)或出现多实例重复消费。
- 单独启动 push-server示例
```powershell
$env:CONFIG_FILE=(Resolve-Path .\server\config.json)
node server/push-server.js
```
- 启动 notify-worker
```powershell
node server/notify-worker.js
```
- 启动 webhook-receiver开发
```powershell
node .\pages\mall\delivery\webhook-server\webhook-receiver.js
# 测试脚本
node .\pages\mall\delivery\webhook-server\test-send.js
```
必备环境变量(最常用)
- `SUPA_URL``SUPA_KEY`(或 `SERVICE_ROLE_KEY`)— Supabase/PostgREST 地址与服务 key后端专用
- `CLOUD_FUNC_URL` — 云函数 HTTP invoke 地址push-server consumer 调用)。
- `PUSH_TOKEN` — 可选:云函数鉴权 token由 push-server 透传)。
- `ENABLE_CONSUMER` / `CONSUMER_POLL_MS` — 是否启用消费者与轮询间隔。
云函数调用约定push-server → 云函数)
- POST bodyJSON示例
```json
{
"token":"<PUSH_TOKEN>",
"push_clientid":"<CID>",
"title":"...",
"content":"...",
"payload": { }
}
```
- 云函数兼容性提示:部分云厂商将真实请求体放在 `event.body`(字符串),云函数需先尝试解析 `event.body`
- 成功判定HTTP 2xx 且(可选)返回 JSON `{ errCode:0 }`
快速验证(端到端)
- 确保有一个活跃设备(写入 `server/data/push_devices.json` 或 Supabase `push_devices`)。
- 写入通知:
```bash
curl -X POST http://localhost:7301/api/v1/notifications -H "Content-Type: application/json" -d '{"aud":"user","recipient_id":123,"notification":{"title":"测试","body":"hello"}}'
```
- 等待消费者轮询并在 push-server 日志或 Supabase `express_notifications.send_status` 查看处理结果。
移除/精简说明
- 本文件已删除冗长的逐行排障示例、重复的 PowerShell 编码说明与历史已弃用的代理字段(如 `PUSH_PROXY_URL` 注释)。详细故障排查请看 `DELIVERY_WEBHOOK_PUSH_SERVER_OVERVIEW.md` 与各子文档。
重要链接
- push-server 源码: [server/push-server.js](../push-server.js)
- 完整全链路数据流转分析:`DELIVERY_NOTIFICATION_DATA_FLOW.md`
- 运行与变更记录:`PUSH_SERVER_README.md`
- 消息生成Worker服务`NOTIFY_WORKER_README.md`
- 云函数集成指引:`UNI_PUSH2_CLOUD_FUNCTION.md`
- 排错指南:`DELIVERY_E2E_TROUBLESHOOTING_20260310.md`
- webhook-receiver`../../pages/mall/delivery/webhook-server/README.md`
- 部署脚本: [server/scripts/start-delivery-backend.ps1](../scripts/start-delivery-backend.ps1)
- 迁移脚本与 SQL pages/mall/delivery/doc/需求文档/
如需我把这份精简后的内容合并到 `DELIVERY_WEBHOOK_PUSH_SERVER_OVERVIEW.md` 或把常用启动命令加入到仓库根 README我可以继续提交修改。