Real-time data synchronization is the cornerstone of interactive live voting. When a voter clicks an option, the presenter's analytics dashboard must reflect that vote within milliseconds. For LivePoll, we selected ASP.NET Core SignalR, Microsoft's state-of-the-art WebSockets abstraction layer.
Hub Groups and Resource isolation
Broadcasting every single vote to every connected user on the platform would quickly saturate server bandwidth. To prevent this, we implemented Hub Groups. When a user opens a dashboard for a specific poll, their browser triggers JoinPollGroup(pollId). The SignalR Hub assigns their connection to a group named after that poll's unique UUID. Updates are then broadcasted only to that specific room, keeping network overhead extremely light.
Handling High-Concurrency Broadcasts
To prepare LivePoll for high-concurrency events (such as live events with thousands of simultaneous voters), we decoupled the direct database writing loop from the broadcasting logic. Broadcast notifications are pushed out asynchronously, bypassing database bottlenecks and ensuring that frontend charts animate at speed, even under heavy load.