Take advantage of Node.js to build fast and scalable server side applications using JavaScript Node.js is an open source, cross-platform runtime environment for building server side and networking applications using JavaScript. Node.js provides an asynchronous, event driven framework to build highly scalable networking applications using JavaScript. And, yes — Node.js leverages all the benefits that an open source technology has to offer. You can take advantage of the package manager called npm for publishing and sharing open source Node.js libraries with the Node.js community. This article presents a discussion on the concepts of Node.js, why it is needed and illustrates the concepts covered by implementing a simple TCP Server. This TCP Server is consumed using a console application written in C#. What is Node.js? Node.js operates on a single thread and leverages the power of asynchronous programming to provide support for many concurrent connections sans the overhead cost of thread switching. Node.js applications are written using JavaScript and can be executed on a wide variety of platforms that include: OS X, Microsoft Windows, Linux, FreeBSD, NonStop and IBM i. Node.js was invented in 2009 by Ryan Dahl and is built on top of the Google V8 JavaScript engine and provides a non-blocking event driven architecture. You can take advantage of Node.js to build fast and highly scalable servers in JavaScript sans the need of multi-threading. The official website of Node.js states: “Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.” The reason Node.js is built on top of this engine is that V8 is open source and fast. You can learn more on this engine from this site. Getting started First things first, you should install Node.js to build applications that leverage Node.js library. You can get the installer for Node.js from the official website. You can also go through the manual and documentation on Node.js there — it is detailed and includes code snippets wherever applicable. Implementing an HTTP server in Node.js In this section we will discuss how we can build our first Node.js application and get it up and running. If you would like to build a simple HTTP Server you can just write the following code in a JavaScript file, save it with a name and you are good to go! var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Server started..."); response.end(); }).listen(9000); Refer to the code snippet given above. The first statement includes the http module so that you can create a Http Server. The Http Server is created using the createServer() method and it listens for incoming connections at port 9000. When this code is executed, the Http Server starts and the message “Server started…” is display in the console. To execute the script and get the server started, you need to invoke the script from the console using the following statement. node IDGServer.js Modules in Node.js Node.js includes a collection of modules. Modules encapsulate a collection of related functions into one single unit. You can also export modules if you need to. The modules in Node.js provide a simple and easy to use API that can be used for File I/O, Networking (using HTTP, TCP, UDP, etc protocols), extend the Node.js library and implement Cryptography functions, etc. The following code snippet illustrates how you can export a module to make it available to other script files. var exports = module.exports = {}; To import a module, you need to use the “require” keyword as shown below. var moduleObj = require("./IDGCore.js"); You can know more on how you can create modules and import or export them as and when needed from this article. http://www.sitepoint.com/understanding-module-exports-exports-node-js/ Implementing a TCP server in Node.js Let’s now build a simple TCP server using Node.js and consume it using C#. To build a simple TCP Server in Node.js here’s all the code you would need to write. Create a file called IDGServer.js and copy the following code into it. <code>var net = require(‘net’); var tcp_server = net.createServer(function(socket) { socket.write('Joydipn'); socket.end('Kanjilaln'); }); tcp_server.listen(8000); You can execute the script and run the TCP Server using the following statement in the console. <code>node IDGServer.js The following piece of C# code can be used to read from the TCP socket we just created and display the text on the console. <code>public static void ReadData() { TcpClient tcpClient = new TcpClient(); tcpClient.Connect("127.0.0.1", 8000); NetworkStream clientStream = tcpClient.GetStream(); byte[] data = new byte[4096]; int bytesRead = 0; try { bytesRead = clientStream.Read(data, 0, 4096); ASCIIEncoding encoder = new ASCIIEncoding(); Console.WriteLine(encoder.GetString(data, 0, bytesRead)); } catch(Exception ex) { //Process the error, write to logs, etc. } finally { tcpClient.Close(); } } In my future posts here I would explore more on Node.js and show how you can use Node.js in enterprise applications. Related content feature 14 great preprocessors for developers who love to code Sometimes it seems like the rules of programming are designed to make coding a chore. Here are 14 ways preprocessors can help make software development fun again. By Peter Wayner Nov 18, 2024 10 mins Development Tools Software Development feature Designing the APIs that accidentally power businesses Well-designed APIs, even those often-neglected internal APIs, make developers more productive and businesses more agile. By Jean Yang Nov 18, 2024 6 mins APIs Software Development news Spin 3.0 supports polyglot development using Wasm components Fermyon’s open source framework for building server-side WebAssembly apps allows developers to compose apps from components created with different languages. By Paul Krill Nov 18, 2024 2 mins Microservices Serverless Computing Development Libraries and Frameworks news Go language evolving for future hardware, AI workloads The Go team is working to adapt Go to large multicore systems, the latest hardware instructions, and the needs of developers of large-scale AI systems. By Paul Krill Nov 15, 2024 3 mins Google Go Generative AI Programming Languages Resources Videos