When faced with two different scenarios, the approach you take will depend on your level of access:
1 - If You Have Server Code Access
If you have the ability to modify the server code, implementing websocket support is an option. Utilizing a tool like https://github.com/ohjames/rxjs-websockets can help automate wrapping socket events into rxjs observables.
2 - If You Lack Server Code Access
In cases where modifying server code is not possible, regular polling of the server becomes necessary. This would involve performing periodic requests to check for updates, as shown below:
Rx
.Observable
.timer(0, 1000) // every second
.mergeMap(_ => this.http.get("/url").map(json => result.json()))
If the server responds with a 304
http status code and no new data since the last call, you can efficiently handle these cases by filtering them out.
Hopefully, this information proves helpful in finding a suitable solution.