Real-time communication -- WebSocket, SSE, pub/sub, collaboration, presence systems.
From godmodenpx claudepluginhub arbazkhan971/godmodeThis skill uses the workspace's default tool permissions.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
/godmode:realtime, "add websockets", "real-time"grep -r "socket.io\|ws\|websocket\|sse\|EventSource" \
--include="*.ts" --include="*.js" -l 2>/dev/null
grep -r "redis.*pub\|redis.*sub\|createAdapter" \
--include="*.ts" --include="*.js" -l 2>/dev/null
Direction: server->client | bidirectional | both
Latency: <100ms | <1s | <30s
Concurrency: <1K | 1K-10K | 10K-100K | >100K
Persistence: ephemeral | replay needed
IF only server->client push: use SSE (simpler). IF bidirectional needed: use WebSocket/Socket.io.
Authenticate during handshake (not after). Reject unauthenticated connections immediately. Heartbeat: client+server exchange every 30s. Dead connection detection within 60s.
Channel patterns: room:{id}, user:{id},
team:{id}, presence:{room}, typing:{room}.
Use Redis pub/sub for multi-server fan-out.
Track online/offline per user+room in Redis sorted set. Score = last-seen timestamp. Expire after 60s. Debounce "user left" by 3-5s (prevents flicker on network blips).
Ephemeral state. Never persist. Broadcast at most
once per 2s. Auto-expire after 5s. Send stop_typing
on blur or submit.
IF multiple users edit same document: use CRDT (Yjs). IF simple form fields: last-write-wins sufficient.
Redis pub/sub adapter for Socket.io multi-instance. Sticky sessions (IP hash) for WebSocket at LB. Per-instance: ~10K connections. Cluster: scale horizontally with Redis adapter.
upstream websocket_backend {
ip_hash;
server ws1:3000;
server ws2:3000;
}
Exponential backoff: base=1s, max=30s, max attempts=10. On reconnect: re-authenticate, rejoin rooms, fetch missed messages by last-received ID. Queue messages during disconnection.
[ ] Auth on handshake
[ ] Heartbeat configured (30s interval)
[ ] Reconnection with state recovery
[ ] Redis pub/sub for multi-instance
[ ] Presence with debounce (3-5s)
[ ] Rate limiting on incoming messages
[ ] Server-side message validation
Append .godmode/realtime-results.tsv:
timestamp transport event_types rooms presence scaling reconnection status
KEEP if: reconnection recovers state AND latency
< 100ms p95 AND ordering preserved.
DISCARD if: messages lost on reconnect
OR cross-instance delivery fails.
STOP when FIRST of:
- All features work (chat, presence, typing)
- Reconnection with state recovery verified
- Cross-instance delivery confirmed
On failure: git reset --hard HEAD~1. Never pause.
| Failure | Action |
|---|---|
| Connections drop often | Heartbeat + backoff reconnect |
| Out-of-order messages | Add sequence numbers, reorder |
| Memory grows per client | Check listener leaks, limit buffers |
| Updates not reaching all | Verify Redis pub/sub fan-out |