Files
2026-07-13 12:20:06 +08:00

2.6 KiB

RTMS 5-Minute Preflight Runbook

Use this before deep debugging. It catches the highest-frequency RTMS issues fast.

Skill Doc Standard Note

  • Agent-skill standard entrypoint is SKILL.md.
  • This runbook is an operational convention (recommended), not a required skill file.
  • SKILL.md is also a navigation convention for larger skill docs.

1) Confirm Architecture Assumption

  • RTMS is backend-first media ingestion.
  • Frontend is optional and should consume backend outputs (WebSocket/SSE/etc).

If implementation assumes frontend-only RTMS behavior, redesign first.

2) Confirm Event-Triggered Kickoff

  • Processing starts only after RTMS lifecycle start events:
    • meeting.rtms_started
    • webinar.rtms_started
    • session.rtms_started
  • Stop events should deactivate pipeline.

If media handling starts before lifecycle start, session gating is wrong.

3) Confirm Product-Specific IDs

  • Meetings/Webinars: use meeting_uuid
  • Video SDK: use session_id
  • Use rtms_stream_id from payload for stream context

Using wrong ID field commonly breaks handshake/signature.

4) Confirm Webhook Handling Pattern

  • Respond 200 immediately.
  • Do heavy work asynchronously.
  • Verify webhook signature if secret token is configured.

Slow webhook responses can trigger retries and duplicate stream attempts.

5) Confirm Connection and Heartbeat

  • Track one active connection per stream/session reference.
  • Handle heartbeat ping/pong per protocol.
  • Implement reconnection strategy explicitly.

No heartbeat handling means unexpected disconnects.

6) Confirm Media Subscription/Gating

  • Ensure requested media types match your processing path.
  • Reject/ignore media packets for inactive sessions.
  • Expose pipeline status endpoint for observability.

This avoids silent packet handling when lifecycle is not active.

7) Quick Probe Checklist

  • GET /api/health returns service alive.
  • GET /api/pipeline/status shows expected active session count.
  • Mock/media probes show:
    • media before start -> rejected
    • start event -> pipeline active
    • media after start -> accepted

Copy/Paste Validation Commands

curl -sS "$RTMS_BASE_URL/api/health"
curl -sS "$RTMS_BASE_URL/api/pipeline/status"

Expected: healthy service JSON and correct active pipeline visibility.

8) Fast Decision Tree

  • No media at all -> lifecycle event not received or wrong webhook route.
  • Duplicate streams -> delayed webhook response or no active-session guard.
  • Handshake/auth errors -> wrong credential pair or wrong session ID field.
  • Frontend appears idle -> backend bridge not connected, not an RTMS source issue.