Node.js is good when you need high levels of concurrency but less amount of dedicated CPU time.
Node.js is best for usage in streaming or event-based real-time applications like:
Game servers – Fast and high-performance servers that need to processes thousands of requests at a time, then this is an ideal framework.
Good for the collaborative environment – This is good for environments which manage the document. In the document management environment you will have multiple people who post their documents and do constant changes by checking out and checking in documents.
So Node.js is good for these environments because the event loop in Node.js can be triggered whenever documents are changed in a document managed environment.
Advertisement servers – Again here you could have thousands of request to pull advertisements from the central server and Node.js can be an ideal framework to handle this.
Streaming servers – Another ideal scenario to use Node is for multimedia streaming servers wherein clients have request's to pull different multimedia contents from this server.
When not to use Node.js
Node.js can be used for a lot of applications with various purpose, the only scenario where it should not be used is if there are long processing times which is required by the application.
Node is structured to be single-threaded. If an application is required to carry out some long-running calculations in the background. For example, if the server is doing some calculations, it won't be able to process any other requests. Node.js is best when processing needs less dedicated CPU time.