WebSocket only signals availability/metadata, never bytes. Add a file_message event carrying { messageId, conversationId, fileId } so recipients know to fetch + decrypt. Reuse the normal delivery pipeline; file bytes flow over HTTP, not the socket.
Acceptance criteria:
- WS carries only metadata; no file bytes traverse the socket
- Recipients fetch via
GET /files/:id after the event
- Delivery/receipts reuse the standard pipeline
WebSocket only signals availability/metadata, never bytes. Add a
file_messageevent carrying{ messageId, conversationId, fileId }so recipients know to fetch + decrypt. Reuse the normal delivery pipeline; file bytes flow over HTTP, not the socket.Acceptance criteria:
GET /files/:idafter the event