Getting Started with Node.js |
Written by Ian Elliot | ||||||
Thursday, 12 October 2017 | ||||||
Page 2 of 2
The ServerThe program has successfully printed a single line of text to the console. This may not be a very inspiring start but it is an example of JavaScript running out side of the browser and you can now start to write applications that access the file system on the local machine, do database lookup and so on. However this isn't really what Node.js is all about. The idea is that you write JavaScript to serve data to a client web browser. You can do this in a number of ways but the simplest is to start a web server. First you need to create a web server and this requires the JavaScript module that defines it:
The require function loads the module if it hasn't already been loaded and returns an object which provides its functionality. Now we have an http object that has a set of methods, events and properties that let us work with HTTP requests. Its most important method is createServer which creates a server object that can be set to listen on any IP address port combination and when it gets a request it will run a function that you specify. You can define the response function anyway that you like but for such a simple example it might as well be defined in the call to createServer:
The response function accepts two parameters:
In this case all that happens is that we write a minimal HTTP header and a single text line saying "Hello World". Finally to make the server active we use its listen method:
The listen method in this case assigns port 1337 to the server and we print a console message that acts as a reminder of this. To see the program in action simply start up a browser and enter the URL http://127.0.0.1:1337/ and you should see the hello world message. EventsNotice that the program doesn't end after the console.log command. The webServer object still exists and is waiting for a client to make a request so that it can call the response function. To stop the web server simply press Ctrl-C. This is an example of event driven programming and if you have used almost any modern programming language that has a graphical UI you will have encountered it before. When you create an even driven UI you place button object on a form and write a click event handler for it. When you run the program it doesn't stop after creating the button. Instead it waits until the button is clicked and then handles the event by invoking the event handler. Node.js works in the same way - you created the web server object and specified an event handler. This waits for the event and calls the handler which in this case supplies the response to the client. To show you that this really is how things are working let's create two web servers listening on two different port numbers -
You can think of the two web servers as being like two buttons each with a distinct event handler waiting for a TCP connection to occur on their particular port. Having two web servers on different ports isn't a likely operating scenario, but you can see how easy it is to "bind" a server to a port. This works just as easily if you want to work lower down the stack with a socket say. This ease of setting up asynchronous listeners for communications protocols is one of the strong points of Node.js. Reading the headersNow you have seen the basic operating principle of Node.js you can probably work out how to create more useful programs. As a slightly larger final example consider the problem of sending back the headers in a request to the client. In this case we can write a standalone response function:
The minimum HTMLwe have to write to get a page to display is the <html> tag so we can start the page off with just this:
Next we get the headers that were sent to the server as an object with one property for each header:
Next we use a for loop to step though each one in turn and send the header name and value to the output page:
Finally we close the <html> tag and send the response to the client:
To actually create the server we need:
That is all there is to it. If you start the new program running you can point a client browser at it to see the headers sent to the server. The example could have been written in a much more compact style by defining the response function in place and grouping the write methods into fewer calls but this doesn't fit the purpose of an example. Where next?Now you have seen Node.js in action how to expand what you are doing should be obvious. There are lots of modules to explore in the documentation, including file system handling, cryptography, sockets and so on. Node.js is still short of a lot of capabilities in the official modules but there are also third party modules that fill many of the gaps - mysql access, HTML parsing and various web frameworks. What Node.js is good at, however, is when you want to create a web application that needs to implement Ajax like updates or where you need to communicate via custom protocols with the client. You can't deny that it's an interesting way to do things and the advantage of being able to use the same language at both ends of a transaction is worth a lot. A Programmers Guide To LanguagesContents
More InformationTo be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.
Comments
or email your comment to: comments@i-programmer.info
|
||||||
Last Updated ( Thursday, 12 October 2017 ) |