This handler will echo message
(log *zerolog.Logger, upgrader websocket.Upgrader)
| 159 | |
| 160 | // This handler will echo message |
| 161 | func websocketHandler(log *zerolog.Logger, upgrader websocket.Upgrader) http.HandlerFunc { |
| 162 | return func(w http.ResponseWriter, r *http.Request) { |
| 163 | // This addresses the issue of r.Host includes port but origin header doesn't |
| 164 | host, _, err := net.SplitHostPort(r.Host) |
| 165 | if err == nil { |
| 166 | r.Host = host |
| 167 | } |
| 168 | |
| 169 | conn, err := upgrader.Upgrade(w, r, nil) |
| 170 | if err != nil { |
| 171 | log.Err(err).Msg("failed to upgrade to websocket connection") |
| 172 | return |
| 173 | } |
| 174 | defer conn.Close() |
| 175 | for { |
| 176 | mt, message, err := conn.ReadMessage() |
| 177 | if err != nil { |
| 178 | log.Err(err).Msg("websocket read message error") |
| 179 | break |
| 180 | } |
| 181 | |
| 182 | if err := conn.WriteMessage(mt, message); err != nil { |
| 183 | log.Err(err).Msg("websocket write message error") |
| 184 | break |
| 185 | } |
| 186 | } |
| 187 | } |
| 188 | } |
| 189 | |
| 190 | func sseHandler(log *zerolog.Logger) http.HandlerFunc { |
| 191 | return func(w http.ResponseWriter, r *http.Request) { |
no test coverage detected