通过心跳机制实现客户端配置的实时更新,无需重启应用即可应用新的配置。
心跳API (/api/user/heartbeat) 在每次响应中包含最新的客户端配置信息:
{
"code": 200,
"msg": "成功",
"data": {
"expire_time": "2026-12-31T23:59:59",
"server_time": "2026-01-06T17:23:25.000000",
"session_status": "active",
"next_heartbeat": 30,
"session_expires_at": "2026-01-07T17:23:25.000000",
"session_extend_enabled": true,
"session_extend_threshold_hours": 4,
"client_configs": {
"api_timeout_seconds": 30,
"client_heartbeat_interval_seconds": 30,
"max_heartbeat_failures": 10,
"max_network_failures": 15
}
}
}
客户端在每次心跳成功时检查并更新配置:
// 检查是否有配置更新
if (updatedUserInfo.client_configs) {
console.log('检测到配置更新:', updatedUserInfo.client_configs)
// 更新全局配置
Object.assign(props.globalConfig, newConfig)
// 如果心跳间隔发生变化,需要重新启动心跳
if (oldInterval !== newInterval) {
console.log(`心跳间隔从 ${oldInterval} 秒变为 ${newInterval} 秒,重新启动心跳`)
stopHeartbeat()
startHeartbeat()
}
}
| 配置项 | 说明 | 默认值 | 影响 |
|---|---|---|---|
api_timeout_seconds |
API请求超时秒数 | 30 | API调用的超时时间 |
client_heartbeat_interval_seconds |
客户端心跳间隔秒数 | 30 | 心跳检测频率 |
max_heartbeat_failures |
最大心跳失败次数 | 10 | 超过后暂停心跳检测 |
max_network_failures |
网络异常最大失败次数 | 15 | 超过后自动登出 |
管理员修改配置:
UPDATE system_config SET config_value='60' WHERE config_key='client_heartbeat_interval_seconds';
如有必要,重新启动相关服务
实时生效:
无需重启应用
立即生效
cd /Users/wuzilong/work/00code/Buff/backend
python test_heartbeat_config.py
-- 将心跳间隔改为60秒
UPDATE system_config SET config_value='60' WHERE config_key='client_heartbeat_interval_seconds';
客户端会在下次心跳时自动调整间隔,并输出日志:
检测到配置更新: {client_heartbeat_interval_seconds: 60}
心跳间隔从 30 秒变为 60 秒,重新启动心跳
-- 增加网络异常容忍度
UPDATE system_config SET config_value='20' WHERE config_key='max_network_failures';
客户端会自动应用新配置,提高网络异常的容忍度。
客户端会在检测到配置更新时输出详细日志:
[心跳] 检测到配置更新: {...}
[心跳] 心跳间隔从 X 秒变为 Y 秒,重新启动心跳
可以通过以下方式验证配置是否正确应用:
此功能让系统具备了真正的动态配置能力,大大提升了系统的灵活性和可维护性。