修改消息后台的启动和停止文件并整理文档
This commit is contained in:
79
server/消息推送文档/README.md
Normal file
79
server/消息推送文档/README.md
Normal 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 body(JSON)示例:
|
||||
```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,我可以继续提交修改。
|
||||
Reference in New Issue
Block a user