简体   繁体   中英

How to send real time response from server to client using Node.js express

on post request server is generating data after few seconds, these are almost 1000 to 10000 entries. Currently i'm saving data into csv file and it's working fine. how can i pas data to client with json array.

Name and Age variable getting data after few seconds

app.post('/', (req, res) => {

// currently passing to results.csv. its working fine i want to send this real time (Name and age) data to client.

const stream = createWriteStream('./results.csv', { flags: 'a', encoding: 'utf8' })

 // Append evaluation from response to file

 stream.write(`${Name}, ${Age}\n`)

// example data:  Patrick, 32

// End stream to avoid accumulation

 stream.end()
})

res.send() only send first row but Name and age variable getting update after after each 10 seconds

app.listen(port, () => {
 console.log("App is running on port " + port);
}); ```

To parse data into json array, you would have to read the stream before sending the data. Example:

let rows = []
fs.createReadStream('./results.csv')
   .pipe(parse())
   .on("error", (error) => console.error(error))
   .on("data", (row) => rows.push(row))
   .on("end", () => res.send(rows))

But if you want to send the csv file data, do something like this:

return res.sendFile("./results.csv", options, (err) => {
    if(error) console.error(error)
    console.log("File has been sent")
})

NOTE: The parse() method used in the first example is gotten from the fast-csv package.

Also, using a package like fast-csv makes it easy to write data to the csv file while setting headers:true . Trying to read the data, the parse method has to be informed of the headers already set in order to use those values for the json keys.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM