There's several options available to you, but first we need to discuss what the requirements are for updates on screen. As far as human perception is concerned, there's a nice write up by the Nielson Norman Group on response times. Basic gist is when a user performs an action:
- 100 milliseconds is perceived as instantaneous
- 1 seconds or less won't interrupt train of thought
- More than 10 seconds feels like something is broken
That said, if changes from the back end aren't changing more frequently than once every 5 seconds, there's no reason to send updates more often then that. Without further information, I would recommend push updates to have an interval between 1-10 seconds.
Second thing to consider is network controls you'll need to worry about. For example, in corporate environments, it's pretty common to lock down external communications to standard internet ports, and may prevent externally originated traffic (i.e. users must initiate a request from inside to get data back).
Polling
This is easy to understand, and you'll need to consider gaps in communications. For example, the client may not be able to make a request in the interval you want because communications were temporarily down. That's easily overcome by specifying the time frame that you are requesting for updates.
- Pros: it works with standard web interactions, and won't be blocked by firewalls
- Cons: if updates aren't that frequent you could be using bandwidth for no benefit
WebSockets
WebSockets essentially keep the connection open and allow the server to push updates. It's used by quite a number of highly interactive sites. It's also a standard web technology so it's not blocked by default on a number of firewalls. However, proxies don't always play nicely with WebSockets.
- Pros: you only consume bandwidth when there is information to send, and there is a lot of language support for writing the server side
- Cons: keeping sockets open can tie up your server more quickly, if you have a microservice architecture you have to take extra care to allow the WebSockets through your API gateway (i.e. reverse proxy)
Custom Sockets
You can always come up with your own permanent socket to exchange data. It sounds harder than it is, but unless you have custom needs it's not really recommended. For example, this would be warranted for a game server where latency is a key consideration. It wouldn't be advisable for a corporate application due to the firewall and proxy considerations.
- Pros: you have full control over the protocol
- Cons: does not play well with some infrastructure, it's custom so there is higher cost of upkeep
Bottom Line
There are even more options that I haven't mentioned. The important part is that you identify what the real constraints are. What is the rate of change of the data you want to present on screen? How quickly do you expect users to interact with those changes? How long will you need to keep updating the screen? Answering those questions will help you choose what the most appropriate solution is for your application.