admin_realtime.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. /*
  3. | 后台实时推送(订单 / 用户列表)。完整说明见 docs/admin-websocket.md。
  4. | 业务写入在事务提交后登记到 admin_realtime_events,常驻命令 admin-realtime:relay
  5. | 读取事件、解析成列表行,经 Laravel 广播(Reverb)推给已登录且有权限的后台管理员。
  6. */
  7. return [
  8. // 关闭时不登记任何事件,未执行迁移或未启动 Reverb 与 relay 时保持关闭
  9. 'enabled' => (bool) env('ADMIN_WS_ENABLED', false),
  10. // 广播连接名,见 config/broadcasting.php
  11. 'connection' => env('ADMIN_WS_BROADCASTER', 'reverb'),
  12. // 前端 Laravel Echo 的连接参数,随 GET /admin/realtime/config 返回;
  13. // REVERB_HOST/PORT/SCHEME 是 Laravel 访问 Reverb 的内网地址,二者通常不同
  14. 'client' => [
  15. 'key' => env('REVERB_APP_KEY'),
  16. 'host' => env('ADMIN_WS_PUBLIC_HOST', ''),
  17. 'port' => (int) env('ADMIN_WS_PUBLIC_PORT', 443),
  18. 'scheme' => env('ADMIN_WS_PUBLIC_SCHEME', 'https'),
  19. ],
  20. // relay 无新事件时的轮询间隔(毫秒)与单批处理的事件数
  21. 'poll_ms' => (int) env('ADMIN_WS_POLL_MS', 1000),
  22. 'batch_size' => (int) env('ADMIN_WS_BATCH_SIZE', 200),
  23. // 跳过的小 id 可能是写入方事务尚未提交,在该时长内仍会补发(秒)
  24. 'gap_seconds' => (int) env('ADMIN_WS_GAP_SECONDS', 60),
  25. // 断线补发单次最多返回的事件数,超过则要求前端重新拉列表
  26. 'replay_limit' => (int) env('ADMIN_WS_REPLAY_LIMIT', 1000),
  27. // 管理员可订阅频道的缓存时长(秒),按钮权限变更最迟在此时长后生效
  28. 'permission_cache_seconds' => (int) env('ADMIN_WS_PERMISSION_CACHE_SECONDS', 60),
  29. // 在线状态扫描间隔(秒),由 relay 顺带执行
  30. 'online_scan_seconds' => (int) env('ADMIN_WS_ONLINE_SCAN_SECONDS', 15),
  31. // 事件表保留时长(小时),也是断线补发能回溯的最长时间
  32. 'retention_hours' => (int) env('ADMIN_WS_RETENTION_HOURS', 72),
  33. ];