MCPcopy
hub / github.com/gorilla/websocket / pumpStdout

Function pumpStdout

examples/command/main.go:59–79  ·  view source on GitHub ↗
(ws *websocket.Conn, r io.Reader, done chan struct{})

Source from the content-addressed store, hash-verified

57}
58
59func pumpStdout(ws *websocket.Conn, r io.Reader, done chan struct{}) {
60 defer func() {
61 }()
62 s := bufio.NewScanner(r)
63 for s.Scan() {
64 ws.SetWriteDeadline(time.Now().Add(writeWait))
65 if err := ws.WriteMessage(websocket.TextMessage, s.Bytes()); err != nil {
66 ws.Close()
67 break
68 }
69 }
70 if s.Err() != nil {
71 log.Println("scan:", s.Err())
72 }
73 close(done)
74
75 ws.SetWriteDeadline(time.Now().Add(writeWait))
76 ws.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, ""))
77 time.Sleep(closeGracePeriod)
78 ws.Close()
79}
80
81func ping(ws *websocket.Conn, done chan struct{}) {
82 ticker := time.NewTicker(pingPeriod)

Callers 1

serveWsFunction · 0.85

Calls 4

FormatCloseMessageFunction · 0.92
WriteMessageMethod · 0.80
SetWriteDeadlineMethod · 0.45
CloseMethod · 0.45

Tested by

no test coverage detected