I have been trying for hours to get the Node.js server to handle 2 requests parallelly but have no success.
Here is my full code:
var http = require('http'); http.createServer(function (req, res) { console.log("log 1"); handleRequest().then(() => { console.log("request handled"); res.write('Hello World!'); res.end(); }); console.log("log 2"); }).listen(8080); const handleRequest = () => { const p = new Promise((resolve, reject) => { setTimeout(() => resolve('hello'), 10000); }) return p; } When i run this i immediately open 2 tabs in my browser (Chrome) and watch the logs in the IDE. Here is the logs i'm getting:
log 1 Fri Mar 12 2021 23:27:39 GMT+0300 (GMT+03:00) log 2 Fri Mar 12 2021 23:27:39 GMT+0300 (GMT+03:00) request handled log 1 Fri Mar 12 2021 23:27:49 GMT+0300 (GMT+03:00) log 2 Fri Mar 12 2021 23:27:49 GMT+0300 (GMT+03:00) request handled For individual requests, it seems that my "async" code works as I expected. At first, logs printed, after 10 seconds, request handling completed. But as you can see in the timestamps, despite I am opening 2 tabs just after another (sending two requests same time), they are not handled parallelly. Actually, I was hoping to get logs like this:
log 1 Fri Mar 12 2021 23:27:39 GMT+0300 (GMT+03:00) log 2 Fri Mar 12 2021 23:27:39 GMT+0300 (GMT+03:00) log 1 Fri Mar 12 2021 23:27:39 GMT+0300 (GMT+03:00) log 2 Fri Mar 12 2021 23:27:39 GMT+0300 (GMT+03:00) request handled request handled It seems my second request is not handled until the first one completely done. What I am doing wrong here? Can you please give me some ideas?
request handledcome from in the logs? I don't see any code that includes that so we can't really say how it fits with the rest of the code.