Building realtime applications is hard.
A scalable solution to this problem involves many cumbersome steps:
- Hooking into replication logs of the database servers, or writing custom data invalidating logic for realtime UI components.
- Adding messaging infrastructure (e.g. RabbitMQ) to your project.
- Writing sophisticated routing logic to avoid broadcasting every message to every web server.
- Reimplementing database functionality in the backend if your app requires realtime computation (e.g. realtime leaderboards).
All this requires enormous commitment of time and engineering resources.