I recently shipped Do Rent, a property management SaaS with landlord, tenant, and admin roles. One requirement stood out early: landlords and tenants needed to message each other in real time, without a full chat infrastructure or a third-party service.
Here's how I built it with Server-Sent Events (SSE) instead of WebSockets, and what I'd do differently next time.
Why SSE over WebSockets
For Do Rent, messages only flow one direction that matters for "real-time" — server to client. The client still sends messages via a normal POST request; the server just needs to push new messages down to whoever's conversation is open. That's exactly the shape SSE is built for:
No extra library, no socket server to manage — it's a long-lived HTTP response.






