修改消息后台的启动和停止文件并整理文档

This commit is contained in:
not-like-juvenile
2026-03-11 16:42:33 +08:00
parent e67016a6f4
commit 9cc6dcc2a6
19 changed files with 327 additions and 375 deletions

View File

@@ -0,0 +1,79 @@
本文件为消息推送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)
- notify-worker [server/notify-worker.js](../notify-worker.js)
- webhook-receiver [pages/mall/delivery/webhook-server/README.md](../../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我可以继续提交修改。