From 41768cbec9d231b55104d1d4cea994c7d2a44147 Mon Sep 17 00:00:00 2001 From: dushixiang Date: Fri, 6 May 2022 21:15:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/api/term_handler.go | 16 ++++++++++------ server/sshd/writer.go | 15 ++------------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/server/api/term_handler.go b/server/api/term_handler.go index bb9565d..5728127 100644 --- a/server/api/term_handler.go +++ b/server/api/term_handler.go @@ -83,13 +83,8 @@ func (r *TermHandler) writeToWebsocket() { if r.isRecording { _ = r.nextTerminal.Recorder.WriteData(s) } - nextSession := session.GlobalSessionManager.GetById(r.sessionId) // 监控 - if nextSession != nil && nextSession.Observer != nil { - nextSession.Observer.Range(func(key string, ob *session.Session) { - _ = ob.WriteMessage(dto.NewMessage(Data, s)) - }) - } + SendObData(r.sessionId, s) buf = []byte{} } case data := <-r.dataChan: @@ -113,3 +108,12 @@ func (r *TermHandler) WriteMessage(msg dto.Message) error { message := []byte(msg.ToString()) return r.webSocket.WriteMessage(websocket.TextMessage, message) } + +func SendObData(sessionId, s string) { + nextSession := session.GlobalSessionManager.GetById(sessionId) + if nextSession != nil && nextSession.Observer != nil { + nextSession.Observer.Range(func(key string, ob *session.Session) { + _ = ob.WriteMessage(dto.NewMessage(Data, s)) + }) + } +} diff --git a/server/sshd/writer.go b/server/sshd/writer.go index 06c07fb..741e065 100644 --- a/server/sshd/writer.go +++ b/server/sshd/writer.go @@ -5,8 +5,6 @@ import ( "strings" "next-terminal/server/api" - "next-terminal/server/dto" - "next-terminal/server/global/session" "next-terminal/server/term" "github.com/gliderlabs/ssh" @@ -51,24 +49,15 @@ func (w *Writer) Write(p []byte) (n int, err error) { if err != nil { return 0, err } - sendObData(w.sessionId, s) + api.SendObData(w.sessionId, s) } } else { err := w.recorder.WriteData(s) if err != nil { return 0, err } - sendObData(w.sessionId, s) + api.SendObData(w.sessionId, s) } } return (*w.sess).Write(p) } - -func sendObData(sessionId, s string) { - nextSession := session.GlobalSessionManager.GetById(sessionId) - if nextSession != nil && nextSession.Observer != nil { - nextSession.Observer.Range(func(key string, ob *session.Session) { - _ = ob.WriteMessage(dto.NewMessage(api.Data, s)) - }) - } -}