CUB-200: implement WebSocket gateway client with v3 protocol
Replace REST poller with WebSocket client as primary gateway connection: - wsclient.go: WebSocket client with v3 handshake (connect.challenge → connect → hello-ok), frame routing (req/res/event), JSON-RPC Send(), auto-reconnect with exponential backoff (1s → 30s max) - sync.go: Initial sync via agents.list + sessions.list RPCs, merge session runtime state into AgentCardData, broadcast fleet.update - events.go: Real-time event handlers for sessions.changed, presence, and agent.config — DB update first, then SSE broadcast - client.go: REST poller retained as fallback (WS is primary) - config.go: Add GATEWAY_WS_URL and OPENCLAW_GATEWAY_TOKEN env vars - main.go: Wire WS client as primary, REST as fallback - .env.example: Document new WS config vars Fallback: If WS connection fails, seeded demo data + REST polling remain available.
This commit is contained in:
10
.env.example
10
.env.example
@@ -12,8 +12,14 @@ ENVIRONMENT=development
|
||||
# Format: postgresql://user:password@host:port/database?sslmode=disable
|
||||
DATABASE_URL=postgresql://controlcenter:controlcenter@localhost:5432/controlcenter?sslmode=disable
|
||||
|
||||
# Gateway (OpenClaw) connection
|
||||
# URL to the OpenClaw gateway API for polling agent states
|
||||
# Gateway (OpenClaw) connection — WebSocket (primary)
|
||||
# WebSocket URL for real-time OpenClaw gateway v3 protocol
|
||||
GATEWAY_WS_URL=ws://localhost:18789/
|
||||
# Auth token for the OpenClaw gateway (operator scope)
|
||||
OPENCLAW_GATEWAY_TOKEN=
|
||||
|
||||
# Gateway (OpenClaw) connection — REST (fallback)
|
||||
# URL to the OpenClaw gateway API for polling agent states (used only if WS fails)
|
||||
GATEWAY_URL=http://localhost:18789/api/agents
|
||||
# Polling interval for agent state updates
|
||||
GATEWAY_POLL_INTERVAL=5s
|
||||
|
||||
Reference in New Issue
Block a user