We’re designing a real-time transportation dashboard in IS 2023.1 that needs to display live shipment tracking, carrier status updates, and delivery ETAs. The dashboard will serve 200+ concurrent users monitoring 5000+ active shipments.
We’re debating three approaches: WebSocket for bidirectional real-time communication, Server-Sent Events for server-to-client streaming, or optimized polling with long-polling fallback. Each has trade-offs around connection management, load balancing complexity, and browser compatibility. What have others found works best for real-time SCM dashboards at scale?
We use separate REST calls for user actions. SSE streams updates to the dashboard, and when users make changes, those go through normal REST endpoints. The REST call triggers backend processing, which then broadcasts updates via SSE to all connected clients. This separation keeps the architecture clean and makes it easier to secure and rate-limit write operations.
Don’t overlook polling optimization. We actually use intelligent polling with exponential backoff and it works surprisingly well. When shipments are actively moving, we poll every 5 seconds. When stable, we back off to 30-60 seconds. This reduces server load significantly compared to maintaining 200+ persistent connections. For a transportation dashboard where updates aren’t truly millisecond-critical, this pragmatic approach might be simpler than managing WebSocket or SSE infrastructure.
Good point about load balancing. Do you need bidirectional communication for user actions like updating shipment priorities or assigning carriers? Or is that handled through separate REST calls?