> If client side needs to be updated about the state of the background task, the best is to send the data to a websocket channel known to the client side.

SSE is nice.

Right up until your user opens your site in more than 6 tabs.

And then you need http2.

(especially the Mercure protocol which makes stuff so simple)