node.js framework

Node.js est un framework Javascript qui s'exécute côté serveur, il est construit sur le moteur V8 (compilation à la volée), le très performant moteur Javascript open source soutenu par Google et utilisé par le navigateur Chrome. Node est non-bloquant, asynchrone, scalable et donc prêt pour le cloud computing !

Plusieurs serveurs web existent et tente de répondre de façon efficace à la problématique de la montée en charge. En effet, beaucoup de sites abandonnent le très connu serveur web Apache, pour utiliser des serveurs répondant à la problématique des 10K connections concurrentes, C10K :

Ceux-ci sont mono-thread, traitent les I/O de manière non-bloquante, contrairement à Apache.

Node.js reprend le même principe, il fournit une API, qui permet de réaliser des applications web, non-bloquantes, temps-réel, performantes, asynchrones, scalables et donc prêtes pour le cloud computing !

Présentation de node.js

Quelques exemples, commençons par le Hello World :

#!/usr/local/bin/node

var sys = require("sys"),
    http = require("http");

http.createServer(function(request, response) {
    response.sendHeader(200, {"Content-Type": "text/html"});
    response.write("Hello World!");
    response.close();
}).listen(8080);

sys.puts("Server running at http://localhost:8080/");
Maintenant, un script que j’ai commencé à développé, il lit les fichiers d’un répertoire, les stocke en mémoire et les affiche sur votre navigateur :

#!/usr/local/bin/node

var sys = require("sys"),  
    http = require("http"),  
    url = require("url"),  
    path = require("path"),  
    fs = require("fs");  
    results = {};
	
fs.readdir(".", function (err, files) {
		var count = files.length;
  		files.forEach(function (filename) {
    			fs.readFile(filename, function (err, data) {
      				results[filename] = data;
      				count--;
      				if (count <= 0) {}
    			});
  		});
	});
 
http.createServer(function(request, response) 
{ 
	url=request.url.match(/\/(.*)/);
	if(url[1]!="favicon.ico") {
	var file=results[url[1]];
        response.writeHead(200);  
        response.write(file);  
        response.end();  
	}
}).listen(8080);  
 
sys.puts("Server running at http://localhost:8080/"); 
Le but de ce script est de pouvoir à terme, “servir” les fichiers statiques de mon blog de façon plus rapide, en supprimant les envois de cookies, … Ainsi, une partie des traitements est distribuée et en cas de montée en charge, ils peuvent être délégué à un autre serveur, la scalabilité et le cloud computing en ligne de mire :)

Il existe également, des moteurs de blog écrit avec node.js comme : express.js, en attendant la prochaine de PHP 5.4 qui sera livré avec PHP-FPM, qui nous vient de Russie, tout comme Nginx. Voir l'article : Apache est mort, et c'est PHP qui mettra les clous dans le cercueil.

Node.js fonctionne sur Linux, Macintosh, Solaris, Windows/Cygwin, FreeBSD et OpenBSD, sur les architectures IA-32, x64, ARM.