Se da la siguiente pila de nodos:
El cliente envía un get a una ruta del servidor, dentro de la ruta del servidor se está ejecutando una tarea que lleva algún tiempo pero que podría mapearse fácilmente porque el servidor está trabajando con una matriz de datos. ¿Es posible que el servidor pueda enviar una respuesta (¿escribir?) que desencadene una acción en el lado del cliente?
Intenté lo siguiente que "funciona" al revisar la pestaña de red en Chrome, pero no sé cómo puedo activar una actualización en cada "escritura" en la búsqueda de mi cliente porque simplemente no sucede nada hasta que se alcanza el "final". el objetivo sería mostrar un contador "realizando la acción n de x" que se actualizó en cada escritura
server.mjs: ... server.get('/action', async (req, res) => { res.setHeader('Content-Type', 'application/json'); // Just to test: res.write(JSON.stringify({current: 0, total: 0, status: 'pending'})); setTimeout(() => {res.write(JSON.stringify({current: 2, total: 0, status: 'pending'}));},1000); setTimeout(() => {res.write(JSON.stringify({current: 3, total: 0, status: 'pending'}));},2000); setTimeout(() => {res.write(JSON.stringify({current: 4, total: 0, status: 'pending'}));},3000); setTimeout(() => {res.write(JSON.stringify({current: 5, total: 0, status: 'pending'}));},4000); res.end() ... client.js (JS part in vue component) ... const requestOptions = { headers: { "Content-Type": "application/json", "Accept": "application/json", "Authorization": this.authKey, "Save-As": this.saveAs, "UUID": this.uuid, "Name": this.name } }; fetch(url, requestOptions) .then(response => { return response.json() }) .then((data) => { console.log(data) this.downloadLink = data.url }) .catch(error => { console.error(error); this.showError("Backend not reachable") }); }, ...Como puedo ver, "escribir" es la única solución en la que es posible enviar actualizaciones al cliente, pero ¿cómo manejarlo entonces?
Lo resolví usando socket.io en mi proyecto. ¡gracias por la pista!