diff --git a/internal/web/actions/actionutils/utils.go b/internal/web/actions/actionutils/utils.go index a6597546..6797f6c6 100644 --- a/internal/web/actions/actionutils/utils.go +++ b/internal/web/actions/actionutils/utils.go @@ -11,6 +11,7 @@ import ( "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/logs" "github.com/iwind/TeaGo/maps" + "github.com/iwind/gosock/pkg/gosock" "net" "net/http" "os" @@ -18,6 +19,7 @@ import ( "reflect" "runtime" "strings" + "time" ) // Fail 提示服务器错误信息 @@ -45,6 +47,25 @@ func FailPage(action actions.ActionWrapper, err error) { var isRPCConnError bool err, isRPCConnError = rpcerrors.HumanError(err, apiEndpoints, Tea.ConfigFile("api.yaml")) + var apiNodeIsStarting = false + var apiNodeProgress = "" + if isRPCConnError { + // API节点是否正在启动 + var sock = gosock.NewTmpSock("edge-api") + reply, err := sock.SendTimeout(&gosock.Command{ + Code: "starting", + Params: nil, + }, 1*time.Second) + if err == nil && reply != nil { + var params = maps.NewMap(reply.Params) + if params.GetBool("isStarting") { + apiNodeIsStarting = true + + var progressMap = params.GetMap("progress") + apiNodeProgress = progressMap.GetString("description") + } + } + } action.Object().ResponseWriter.WriteHeader(http.StatusInternalServerError) if len(action.Object().Request.Header.Get("X-Requested-With")) > 0 { @@ -90,14 +111,25 @@ func FailPage(action actions.ActionWrapper, err error) {