diff --git a/go/internal/pusher/conn.go b/go/internal/pusher/conn.go index 4a81645..c28ab33 100644 --- a/go/internal/pusher/conn.go +++ b/go/internal/pusher/conn.go @@ -44,8 +44,12 @@ func (c *Conn) ReadPump(ctx context.Context, hub *Hub) { return } - // Ignore keep-alive pings + // Respond to keep-alive pings if string(data) == "ping" { + if err := c.ws.Write(ctx, websocket.MessageText, []byte("pong")); err != nil { + slog.Debug("websocket pong write error", "connId", c.id, "error", err) + return + } continue } diff --git a/js/src/lib/pusher-client.ts b/js/src/lib/pusher-client.ts index 8a4c707..1ec4e7b 100644 --- a/js/src/lib/pusher-client.ts +++ b/js/src/lib/pusher-client.ts @@ -176,6 +176,9 @@ export class PusherClient { } private handleMessage(data: string): void { + // Ignore keep-alive pong responses + if (data === "pong") return; + let msg: ServerMessage; try { msg = JSON.parse(data);