dsh-web-lifecycle:在側邊欄添加重啓與關機按鈕

在 DSH Web 開發流程中,停止或重啓服務器通常需要在終端操作,這會打斷當前的瀏覽器會話或丟失端口上下文。dsh-web-lifecycle 插件通過在側邊欄底部提供直接的交互按鈕,解決了這一問題。

插件簡介

這是一個 DSH Web 插件,由 DDA-DIGITAL 維護。它將“重啓”和“關機”兩個按鈕添加到側邊欄底部。該插件不依賴任何運行時庫,僅使用 Node.js 內置模塊。如果當前環境不支持(如缺少 webServer 或 appExit),插件將保持靜默,不影響宿主。

核心功能

  1. 重啓:保持相同的端口和會話(Cookie 權限不變),支持獨立運行或通過 dshweb 包裝器運行。重啓會中斷當前所有活動任務。
  2. 關機:停止服務器並關閉標籤頁。如果瀏覽器限制(如普通標籤頁)導致無法自動關閉,會顯示全屏提示卡片。

安裝與啓用

通過以下命令安裝插件:

dsh plugin --profile web add github:DDA-DIGITAL/dsh-web-lifecycle

安裝後,重啓 dsh web 以加載宿主端,刷新頁面以加載客戶端。

典型用法

重啓

重啓有兩種運行模式,根據是否使用 dshweb 包裝器而定:

  • dshweb 包裝器:插件退出碼爲 75,包裝器檢測到該代碼後,會在約 1 秒內重新啓動服務器並重新加載頁面。
  • 獨立模式:插件生成一個協調器進程,監聽端口釋放並等待新服務器健康檢查,日誌記錄在 $DSH_HOME/plugins-data/dsh-web-lifecycle/restart.log。

關機

插件退出碼爲 0,確保包裝器停止重啓循環。頁面會嘗試調用 window.close() 關閉標籤頁。由於瀏覽器安全限制,window.close() 僅對由腳本打開的窗口有效。在普通瀏覽器標籤頁中,此方法會失效,頁面會顯示全屏提示卡片。

配置說明

默認配置位於插件的 cordis.patch.yml 行中,可通過 $DSH_HOME/profiles/web/cordis.patch.yml 覆蓋。關鍵配置項包括:

  • confirm:是否在執行操作前顯示確認彈窗(默認爲 true)。
  • allowShutdown:是否顯示關機按鈕(默認爲 true)。
  • healthTimeoutMs:獨立模式下等待新服務器健康檢查的超時時間(默認爲 30000 毫秒)。
  • logToConsole:是否將插件的決策日誌輸出到 dsh web 的日誌中(默認爲 true)。

注意事項

  • 瀏覽器限制:window.close() 在普通瀏覽器標籤頁中無效,需手動按快捷鍵關閉。
  • 守護進程:關機僅停止進程,系統級守護進程(如 launchd/systemd/pm2)可能會將其重啓,插件本身不支持處理這種情況。
  • 會話中斷:無論是重啓還是關機,都會中斷當前所有的活躍任務、子代理和後臺作業。
  • 啓用驗證:如果按鈕未顯示,請運行 dsh --profile web --dump-config 確認 web-lifecycle 是否已列出,並確保已重啓 dsh web。

該插件通過 Exit Code 協議(75=重啓,0=關機)與 DSH 環境交互,簡化了 Web 端的服務器管理。更多詳情請訪問 GitHub。

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

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

小夜