自动重连与监控
AutoReconnectManager 使用闭包调用连接层,不直接持有 SSH 引擎。默认退避序列为:
3s → 5s → 10s → 20s → 30s默认最多重连 5 次。网络不可用时,重连任务进入等待集合;网络恢复后重新发起连接,退避从 1 秒初始延迟重新开始。
用户意图优先
Section titled “用户意图优先”应用分别记录用户主动断开 SSH 和主动停用隧道。自动重连不会撤销用户决定:
| 用户操作 | 后续行为 |
|---|---|
| 手动断开 SSH | 不自动重连 |
| 手动重新连接 | 清除断开标记,允许后续自动恢复 |
| 手动停用隧道 | 不随 SSH 重连自动恢复 |
| SSH 意外断开 | 按退避策略重连 |
| 隧道因断开而级联停用 | SSH 恢复后自动恢复 |
NetworkMonitor 基于 NWPathMonitor 暴露:
status:satisfied、unsatisfied或requiresConnection。isExpensive:移动网络或个人热点时为true。isConstrained:低数据模式时为true。
这些信息用于决定是否暂停和恢复重连。应用不会把网络错误误判成服务器拒绝连接。
全局 ByteCounter 使用线程安全锁统计所有通道的上下行字节,SpeedMonitor 每秒采样并格式化显示:
B/S · KB/S · MB/SmacOS 菜单栏图标可选择只显示图标,或同时显示上下行速率。连接和隧道菜单项也能展示内联速率。
日志同时写入 Apple 系统日志与独立文本文件,格式为:
[timestamp] [LEVEL] [CATEGORY] message单文件最多 500 行,使用串行写入队列。设置中的日志查看器会合并内存与文件日志并去重。