- name
- a2a-market-websocket-realtime
- description
- Deliver real-time websocket updates for intent, quote, negotiation, order, and payment events. Use when implementing push channels, subscription authorization, and connection/session lifecycle for market clients.
a2a-Market WebSocket Realtime
Set up realtime delivery skeleton for buyer and operator clients.
Current status: publishable framework with stable event contracts, not full scale tuning.
Scope
- Define channel naming and auth guard for buyer, node, and admin roles.
- Push canonical domain events with predictable payload shape.
- Manage reconnect semantics and last-event cursor replay.
Suggested Project Layout
app/interfaces/ws/socket_gateway.pyapp/application/services/realtime_service.pyapp/infrastructure/ws/connection_registry.pyapp/infrastructure/cache/replay_cursor_store.py
Minimum Contracts (MVP P0)
subscribe(channel, cursor)validates permission and registers stream.publish_event(channel, event)fans out to online subscribers.resume(channel, cursor)replays missed events within retention window.heartbeat(connection_id)updates liveness and cleanup scheduling.
Required Event Coverage
INTENT_CREATEDQUOTE_RECEIVEDNEGOTIATION_STARTEDORDER_CREATEDPAYMENT_SUCCEEDED
Guardrails
- Keep payloads versioned and backward compatible.
- Limit per-connection queue to prevent memory blowups.
- Drop unauthorized subscription attempts with structured error codes.
Implementation Backlog
- Add presence channels and typing/status hints for negotiation UI.
- Add regional relay nodes for cross-region latency reduction.
Runtime Implementation
- Status: implemented in local runtime package.
- Primary code paths:
runtime/src/interfaces/ws/event-bus.js- Validation: covered by
runtime/testsandnpm testinruntime/.