clientReader waits for options changes from the client. The client can at any time change the log level and binary name it watches.
()
| 164 | // clientReader waits for options changes from the client. The client can at any time |
| 165 | // change the log level and binary name it watches. |
| 166 | func (c *Client) clientReader() { |
| 167 | defer func() { |
| 168 | c.Stop() |
| 169 | }() |
| 170 | c.conn.SetReadLimit(maxMessageSize) |
| 171 | c.conn.SetPongHandler(func(string) error { |
| 172 | if err := c.conn.SetReadDeadline(time.Now().Add(pongWait)); err != nil { |
| 173 | return err |
| 174 | } |
| 175 | return nil |
| 176 | }) |
| 177 | for { |
| 178 | mt, data, err := c.conn.ReadMessage() |
| 179 | if err != nil { |
| 180 | if IsErrorOfInterest(err) { |
| 181 | slog.ErrorContext(c.ctx, "error reading websocket message", slog.Any("error", err)) |
| 182 | } |
| 183 | break |
| 184 | } |
| 185 | |
| 186 | if c.messageHandler != nil { |
| 187 | if err := c.messageHandler(data); err != nil { |
| 188 | slog.ErrorContext(c.ctx, "error handling message", slog.Any("error", err)) |
| 189 | } |
| 190 | } |
| 191 | if mt == websocket.CloseMessage { |
| 192 | break |
| 193 | } |
| 194 | } |
| 195 | } |
| 196 | |
| 197 | func (c *Client) writeMessage(messageType int, message []byte) error { |
| 198 | c.writeMux.Lock() |
no test coverage detected