websockets set max payload log size. (#42)

This commit is contained in:
Miroslav Šedivý 2023-03-31 12:02:19 +02:00 committed by GitHub
parent 2ff47ac920
commit 43a649d2c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 6 deletions

View File

@ -23,6 +23,9 @@ const pingPeriod = 10 * time.Second
// period for sending inactive cursor messages
const inactiveCursorsPeriod = 750 * time.Millisecond
// maximum payload length for logging
const maxPayloadLogLength = 10_000
// events that are not logged in debug mode
var nologEvents = []string{
// don't log twice
@ -313,10 +316,15 @@ func (manager *WebSocketManagerCtx) handle(connection *websocket.Conn, peer type
// log events if not ignored
if ok, _ := utils.ArrayIn(data.Event, nologEvents); !ok {
payload := data.Payload
if len(payload) > maxPayloadLogLength {
payload = []byte("<truncated>")
}
logger.Debug().
Str("address", connection.RemoteAddr().String()).
Str("event", data.Event).
Str("payload", string(data.Payload)).
Str("payload", string(payload)).
Msg("received message from client")
}

View File

@ -12,6 +12,7 @@ import (
"github.com/demodesk/neko/pkg/types"
"github.com/demodesk/neko/pkg/types/event"
"github.com/demodesk/neko/pkg/types/message"
"github.com/demodesk/neko/pkg/utils"
)
type WebSocketPeerCtx struct {
@ -60,11 +61,18 @@ func (peer *WebSocketPeerCtx) Send(event string, payload any) {
return
}
// log events if not ignored
if ok, _ := utils.ArrayIn(event, nologEvents); !ok {
if len(raw) > maxPayloadLogLength {
raw = []byte("<truncated>")
}
peer.logger.Debug().
Str("address", peer.connection.RemoteAddr().String()).
Str("event", event).
Str("payload", string(raw)).
Msg("sending message to client")
}
}
func (peer *WebSocketPeerCtx) Ping() error {