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

Function writer

examples/filewatch/main.go:72–111  ·  view source on GitHub ↗
(ws *websocket.Conn, lastMod time.Time)

Source from the content-addressed store, hash-verified

70}
71
72func writer(ws *websocket.Conn, lastMod time.Time) {
73 lastError := ""
74 pingTicker := time.NewTicker(pingPeriod)
75 fileTicker := time.NewTicker(filePeriod)
76 defer func() {
77 pingTicker.Stop()
78 fileTicker.Stop()
79 ws.Close()
80 }()
81 for {
82 select {
83 case <-fileTicker.C:
84 var p []byte
85 var err error
86
87 p, lastMod, err = readFileIfModified(lastMod)
88
89 if err != nil {
90 if s := err.Error(); s != lastError {
91 lastError = s
92 p = []byte(lastError)
93 }
94 } else {
95 lastError = ""
96 }
97
98 if p != nil {
99 ws.SetWriteDeadline(time.Now().Add(writeWait))
100 if err := ws.WriteMessage(websocket.TextMessage, p); err != nil {
101 return
102 }
103 }
104 case <-pingTicker.C:
105 ws.SetWriteDeadline(time.Now().Add(writeWait))
106 if err := ws.WriteMessage(websocket.PingMessage, []byte{}); err != nil {
107 return
108 }
109 }
110 }
111}
112
113func serveWs(w http.ResponseWriter, r *http.Request) {
114 ws, err := upgrader.Upgrade(w, r, nil)

Callers 1

serveWsFunction · 0.85

Calls 5

readFileIfModifiedFunction · 0.85
WriteMessageMethod · 0.80
CloseMethod · 0.45
ErrorMethod · 0.45
SetWriteDeadlineMethod · 0.45

Tested by

no test coverage detected