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 模式提供了一種優雅的進程管理方式,通過寬限期機制平衡了便捷性與容錯性。

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

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

小夜