From bc9e33ab4dbb9df9c39bc365fa2d16f7db6a408b Mon Sep 17 00:00:00 2001 From: akrike <1625167628@qq.com> Date: Sun, 8 Jun 2025 22:17:24 +0800 Subject: [PATCH] update --- internal/app/api/ws.go | 15 ++++----------- internal/app/logic/process_base.go | 2 ++ internal/app/middle/wait.go | 2 +- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/internal/app/api/ws.go b/internal/app/api/ws.go index e45bf1c..67daab3 100644 --- a/internal/app/api/ws.go +++ b/internal/app/api/ws.go @@ -9,7 +9,6 @@ import ( "github.com/lzh-1625/go_process_manager/config" "github.com/lzh-1625/go_process_manager/internal/app/constants" "github.com/lzh-1625/go_process_manager/internal/app/logic" - "github.com/lzh-1625/go_process_manager/internal/app/middle" "github.com/lzh-1625/go_process_manager/internal/app/repository" "github.com/lzh-1625/go_process_manager/log" "github.com/lzh-1625/go_process_manager/utils" @@ -75,14 +74,11 @@ func (w *wsApi) WebsocketHandle(ctx *gin.Context) { proc.ReadCache(wci) w.startWsConnect(wci, cancel, proc, hasOprPermission(ctx, uuid, constants.OPERATION_TERMINAL_WRITE)) proc.AddConn(reqUser, wci) - defer middle.ProcessWaitCond.Trigger() defer proc.DeleteConn(reqUser) conn.SetCloseHandler(func(_ int, _ string) error { - middle.ProcessWaitCond.Trigger() cancel() return nil }) - middle.ProcessWaitCond.Trigger() select { case <-proc.StopChan: log.Logger.Infow("ws连接断开", "操作类型", "进程已停止,强制断开ws连接") @@ -101,8 +97,8 @@ func (w *wsApi) WebsocketShareHandle(ctx *gin.Context) { errCheck(ctx, data.ExpireTime.Unix() <= time.Now().Unix(), "Share expired!") proc, err := logic.ProcessCtlLogic.GetProcess(data.Pid) errCheck(ctx, err != nil, err) - gusetName := "guest-" + strconv.Itoa(data.Id) // 构造访客用户名 - errCheck(ctx, proc.HasWsConn(gusetName), "A connection already exists; unable to establish a new one!") + guestName := "guest-" + strconv.Itoa(data.Id) // 构造访客用户名 + errCheck(ctx, proc.HasWsConn(guestName), "A connection already exists; unable to establish a new one!") errCheck(ctx, proc.State.State != 1, "The process is currently running.") errCheck(ctx, !proc.VerifyControl(), "Insufficient permissions; please check your access rights!") conn, err := upgrader.Upgrade(ctx.Writer, ctx.Request, nil) @@ -119,15 +115,12 @@ func (w *wsApi) WebsocketShareHandle(ctx *gin.Context) { } proc.ReadCache(wci) w.startWsConnect(wci, cancel, proc, data.Write) - proc.AddConn(gusetName, wci) - defer middle.ProcessWaitCond.Trigger() - defer proc.DeleteConn(gusetName) + proc.AddConn(guestName, wci) + defer proc.DeleteConn(guestName) conn.SetCloseHandler(func(_ int, _ string) error { - middle.ProcessWaitCond.Trigger() cancel() return nil }) - middle.ProcessWaitCond.Trigger() select { case <-proc.StopChan: log.Logger.Infow("ws连接断开", "操作类型", "进程已停止,强制断开ws连接") diff --git a/internal/app/logic/process_base.go b/internal/app/logic/process_base.go index 13f5442..904fee4 100644 --- a/internal/app/logic/process_base.go +++ b/internal/app/logic/process_base.go @@ -177,12 +177,14 @@ func (p *ProcessBase) AddConn(user string, c ConnectInstance) { p.wsLock.Lock() defer p.wsLock.Unlock() p.ws[user] = c + middle.ProcessWaitCond.Trigger() } func (p *ProcessBase) DeleteConn(user string) { p.wsLock.Lock() defer p.wsLock.Unlock() delete(p.ws, user) + middle.ProcessWaitCond.Trigger() } func (p *ProcessBase) logReportHandler(log string) { diff --git a/internal/app/middle/wait.go b/internal/app/middle/wait.go index 5965eb0..e554c40 100644 --- a/internal/app/middle/wait.go +++ b/internal/app/middle/wait.go @@ -29,7 +29,7 @@ func InitWaitCond() { func newWaitCond() *waitCond { wc := &waitCond{ cond: *sync.NewCond(&sync.Mutex{}), - ts: time.Now().UnixMicro(), + ts: time.Now().UnixNano(), timeMap: sync.Map{}, trigger: make(chan struct{}), }