問題不是啟動一個程序
遊戲伺服器可以用一條命令啟動,但管理面板還必須回答更多問題:程序是否真的存活、誰可以送出指令、安裝工作進行到哪裡,以及應用程式關閉時如何處理仍在運行的子程序。
我將系統拆成兩個邊界:本機 agent 負責程序、檔案與持久化,React 前端只透過 HTTP 和 WebSocket 操作明確的資源。這讓畫面不需要猜測程序狀態,也不會直接碰觸作業系統能力。
將長工作建模成 Job
Minecraft 或 SteamCMD 的安裝與更新都不是即時請求。若讓 HTTP request 一直等待,重新整理頁面後就會失去進度,也很難處理失敗與重試。現在的方向是把每次安裝視為有識別碼、階段、進度與錯誤資訊的 Job,再由前端訂閱更新。
Windows 是設計條件
正常終止訊號並不保證遊戲程序一定退出,因此程序管理器需要保存 PID、監聽 exit event,並在必要時使用 Windows 的程序樹終止機制。這不是額外補丁,而是生命週期設計的一部分。
目前進度
第一階段已完成登入、伺服器 CRUD、啟停與即時主控台;目前持續開發自動安裝、更新和背景工作介面。文章會隨這些邊界穩定後繼續補充。