Skip to content

fix(websocket): handle broadcast Lagged error + ping keepalive#376

Open
schwarztim wants to merge 1 commit intoruvnet:mainfrom
schwarztim:fix/websocket-lagged-keepalive
Open

fix(websocket): handle broadcast Lagged error + ping keepalive#376
schwarztim wants to merge 1 commit intoruvnet:mainfrom
schwarztim:fix/websocket-lagged-keepalive

Conversation

@schwarztim
Copy link
Copy Markdown

When the broadcast channel's recv() returns Lagged (client fell behind), the server previously treated it as fatal and dropped the connection. The client immediately reconnected, creating a visible 2-4s freeze cycle on the dashboard.

Fix:

  • Lagged error: skip missed frames with continue instead of break
  • Add 30s ping/pong keepalive to prevent reverse proxy idle timeouts (Caddy, nginx default 60s idle → drops long-lived WS connections)

Testing: 11 ESP32-S3 nodes streaming at ~20fps per node, sustained 154 frames over 8s, zero disconnects.

Fixes dashboard freezing in multi-node deployments.

When the broadcast channel's recv() returns Lagged (client fell behind),
the server previously treated it as fatal and dropped the connection.
The client immediately reconnected, creating a visible 2-4s freeze cycle.

Fix:
- Lagged error: skip missed frames with continue instead of break
- Add 30s ping/pong keepalive to prevent reverse proxy idle timeouts
  (Caddy, nginx default 60s idle → drops long-lived WS connections)

Tested with 11 ESP32-S3 nodes streaming at ~20fps per node:
sustained 154 frames over 8 seconds, zero disconnects.

Fixes dashboard freezing reported in multi-node deployments.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant