legacy: forward ws ping messages #506.

This commit is contained in:
Miroslav Šedivý 2025-04-06 17:10:22 +02:00
parent b8bfcaf4bf
commit 3c787baa40
2 changed files with 12 additions and 2 deletions

View file

@ -142,7 +142,7 @@ func (h *LegacyHandler) Route(r types.Router) {
m = websocket.FormatCloseMessage(e.Code, e.Text)
}
}
errc <- err
errc <- fmt.Errorf("src read message error: %w", err)
dst.WriteMessage(websocket.CloseMessage, m)
break
}
@ -163,12 +163,20 @@ func (h *LegacyHandler) Route(r types.Router) {
})
continue
} else if errors.Is(err, ErrWebsocketSend) {
errc <- err
errc <- fmt.Errorf("dst write message error: %w", err)
break
} else {
h.logger.Error().Err(err).Msg("couldn't rewrite text message")
}
}
// forward ping messages
if msgType == websocket.PingMessage {
err = dst.WriteMessage(websocket.PingMessage, nil)
if err != nil {
errc <- err
break
}
}
}
}

View file

@ -6,6 +6,8 @@ If you want to run Neko behind a reverse proxy, you can use the following exampl
Do not forget to enable [`server.proxy=true`](/docs/v3/configuration#server.proxy) in your `config.yml` file to allow the server to trust the proxy headers.
:::
Neko pings websocket client every 10 seconds, and client is scheduled to send [heartbeat](/docs/v3/configuration#session.heartbeat_interval) to the server every 120 seconds. Make sure, that your timeout settings in the reverse proxy are set accordingly.
## Traefik v2 {#traefik-v2}
See the example below for a `docker-compose.yml` file.