dsh-auto-exit:关闭 Web UI 时自动退出 CLI 进程

DSH 的 --profile web 模式会在终端中保持一个长驻进程,通过浏览器提供的 Web UI 进行操作。关闭浏览器标签页通常无法停止该进程,迫使开发者手动切换回终端并输入 Ctrl+C。dsh-auto-exit 插件通过检测 WebSocket 连接状态,解决了这个问题,实现“关掉 Web UI 即退出 CLI 进程”。

插件简介

  • 名称:dsh-auto-exit
  • 一句话描述:关闭 Web UI 时自动退出 CLI 进程(等效于 Ctrl+C)
  • 作者:xiaxingtianxia2-glitch
  • 许可证:MIT
  • 分类:工作流

核心功能

  • 自动退出 CLI 进程
  • WebSocket 连接检测
  • 宽限期机制(默认 15 秒)
  • 状态查看端点
  • 支持配置项

安装

在启用 Web 模式的前提下,通过以下命令安装插件:

dsh plugin --profile web add dsh-auto-exit

使用方法

  1. 启动 dsh --profile web,用浏览器打开 Web UI(默认 http://127.0.0.1:3080)。
  2. 关闭浏览器标签页或窗口。注意:必须关闭所有标签页/窗口才会触发退出。
  3. 15 秒后进程自动退出(等效于 Ctrl+C)。

查看状态

插件提供状态查看端点,可用于调试或监控:

curl http://127.0.0.1:3080/auto-exit/status

返回示例:

{
  "enabled": true,
  "armed": true,
  "sockets": 2,
  "countdownMs": 0,
  "graceSeconds": 15,
  "pollMs": 1000,
  "dryRun": false,
  "lastEvent": "armed",
  "fired": false
}

配置项

插件支持以下配置(默认值):

字段 默认值 说明
enabled true 总开关
graceSeconds 15 连接全部断开后等待的秒数再退出
pollMs 1000 检测间隔(毫秒)
armAfterFirstConnect true 见到首个页面连接后才生效(启动时未开页面不退出)
dryRun false 试运行:只记录日志,不真正退出

适用场景与注意

  • 适用范围:仅适用于 --profile web 模式。
  • 触发条件:需关闭所有标签页/窗口才会触发退出,页面刷新或短暂重开不会误退。
  • 异常处理:电脑休眠或浏览器崩溃也会断开连接导致退出。如不希望此类情况触发退出,可调大 graceSeconds。

结语

dsh-auto-exit 为 Web 模式提供了一种优雅的进程管理方式,通过宽限期机制平衡了便捷性与容错性。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜