Websocket is definitely an option.
Another option
If it is really a time consuming job, keeping your conditions in mind,
I think you can use a batch job in backend to do that computing and store in a custom table. You can poll every 30 seconds from your UI5 app to check if the result is available/ready.