-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Problem
Currently, when Alice's connector processes Bob's message, it POSTs the delivery receipt directly to Bob's proxy via HTTP. This has issues:
- Alice's connector needs to know Bob's proxy URL and authenticate to it
- If Bob's proxy is temporarily unavailable, the receipt is lost (fire-and-forget)
- Receipts never reach Bob's connector (see Delivery receipts are stored but never consumed by sender #165)
Current Flow
Alice's connector → HTTP POST → Bob's proxy → stores in DO → nobody reads it
Proposed Flow
Alice's connector → HTTP POST → Alice's proxy → Queue → Bob's proxy DO → WebSocket → Bob's connector
Why route through Alice's proxy?
- Connector stays dumb — only talks to its own proxy (WebSocket + HTTP)
- Connector doesn't need to know about Cloudflare Queues
- Proxy is the only component touching CF infrastructure
- Alice's proxy validates the receipt, publishes to Queue
- Bob's proxy consumes from Queue, stores in DO, pushes to Bob's connector via WebSocket (Delivery receipts are stored but never consumed by sender #165)
Architecture
- Alice's connector POSTs receipt to Alice's proxy (new endpoint or existing receipt path)
- Alice's proxy validates + publishes to receipt Queue
- Bob's proxy has Queue consumer → routes to Bob's DO
- Bob's DO stores receipt + pushes via WebSocket if connector is connected
- If connector is offline, receipt is stored in DO for delivery on reconnect
Benefits
- Decouples receipt delivery from connector-to-proxy connectivity
- Receipts are durable (Queue retries on failure)
- Solves Delivery receipts are stored but never consumed by sender #165 naturally — receipts flow all the way to sender's connector
- Dead letter receipts (
dead_letteredstatus) follow the same path — sender's agent can act on failures - Connector interface unchanged — still just HTTP POST to its own proxy
Dependencies
- Delivery receipts are stored but never consumed by sender #165 (push receipts to connector via WebSocket)
Impact
- Free plan: 10K Queue ops/day (receipts are low volume)
- No connector changes needed
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels