For the most part, Node.js is used in conjunction with real-time applications and to build the server-side of websites. However, that’s really only scratching the surface of the kind of thing that can be done with Node.js.
If you have a data-intensive application and the need to distribute it over various devices and systems, Node.js is a good option for you. It’s able to handle the load thanks to an emphasis on the effectiveness of concurrency.
As for concrete examples, think along the lines of maintenance of a connection between a server and browser, video/audio streaming, On-line games, chat rooms, static file servers, and so on.
That being said you should also be aware that while Node.js is able to take on large amounts of data, it can’t handle high CPU usage or heavy computation. The problem lies in Node.js being single-threaded and thus unable to handle it’s processes as well as CPU usage. In other words, everything will be blocked up.
Needless to say, using Node.js is a matter of personal preference. Still, there are number of features that make it worthwhile.
Such features include
An event-driven, non-blocking I/O model - As previously stated, concurrency is a huge part of Node.js and it comes as a result of these features. While it’s possible to create an application without them, having them definitely makes things easier.
Push Capabilities -This aspect makes a difference as it aids in getting an application out that much quicker.
Access to open source resources -Node.js is open source and as such, can draw on a large developer community should issues arise.
Like most tools and resources, Node.js is constantly being improved. version 0.10.36 was just released this month. This update includes added features, security improvements and general fixes.
Throughout this post, I've highlighted some of the advantages of Node.js, but as with most things, there are some drawbacks that should be considered.
Lack of a standard library. In Node.js, the event loop is present as a language instead of a library.
Unstable API -it's possible for the Node API to be incompatible with different releases
There are problems with inherent code organization -things can get unruly.
Granted, this is only a short list of obstacles you may run into. Are they enough to dissuade the use of Node.js? You have to be the judge on that.
Obviously the aforementioned examples only make up a small taste of the types of things that can be done with Node.js. Still, with the amount of offerings and advantages, Node.js has managed to rise above other environments. That being said, it is by no means a one-size fits all solution. It won't necessarily work for everyone and you should be judicious in making the decision to use it or not. However, it's definitely something to consider.