Skip to content

Conversation

@acooks
Copy link
Owner

@acooks acooks commented Dec 9, 2025

Implement graceful degradation for slow WebSocket clients by splitting the single message queue into 5 tiered queues based on message frequency:

  • Tier 1: 5ms intervals (~400 msgs/sec)
  • Tier 2: 10ms intervals (~200 msgs/sec)
  • Tier 3: 20ms intervals (~100 msgs/sec)
  • Tier 4: 50ms intervals (~40 msgs/sec)
  • Tier 5: 100ms+ intervals + config (~36 msgs/sec)

Key changes:

  • New clients start at tier 3 (20ms) and adapt based on performance
  • Server tracks drop/delivered ratio per consumer over 5-second windows
  • Clients upgrade to faster tiers when drops < 2%, degrade when > 10%
  • Tier 5 is guaranteed minimum - never unsubscribed
  • Server sends "resolution" message when tier changes
  • Client disables unavailable interval options in dropdown
  • Slow consumers are skipped (not blocked) in produce()

Removes:

  • Old single mq_msg_ws queue (replaced by 5 tiered queues)
  • Stale consumer tracking (replaced by adaptive tiers)
  • Gap warning UI (replaced by resolution indicator)

🤖 Generated with Claude Code

Implement graceful degradation for slow WebSocket clients by splitting
the single message queue into 5 tiered queues based on message frequency:

- Tier 1: 5ms intervals (~400 msgs/sec)
- Tier 2: 10ms intervals (~200 msgs/sec)
- Tier 3: 20ms intervals (~100 msgs/sec)
- Tier 4: 50ms intervals (~40 msgs/sec)
- Tier 5: 100ms+ intervals + config (~36 msgs/sec)

Key changes:
- New clients start at tier 3 (20ms) and adapt based on performance
- Server tracks drop/delivered ratio per consumer over 5-second windows
- Clients upgrade to faster tiers when drops < 2%, degrade when > 10%
- Tier 5 is guaranteed minimum - never unsubscribed
- Server sends "resolution" message when tier changes
- Client disables unavailable interval options in dropdown
- Slow consumers are skipped (not blocked) in produce()

Removes:
- Old single mq_msg_ws queue (replaced by 5 tiered queues)
- Stale consumer tracking (replaced by adaptive tiers)
- Gap warning UI (replaced by resolution indicator)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
@acooks acooks merged commit 2c1b8cb into master Dec 9, 2025
2 checks passed
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.

2 participants