Configuration d'un serveur WEB
le code du serveur est dans le fichier 'server_io.js' , (un extrait ci-dessous ).
1
//---------------------------------- le serveur -------------------------
2
3
function sendError(errCode, errString, response)
4
{
5
response.writeHead(errCode, {"Content-Type": "text/plain"});
6
response.write(errString + "\n");
7
response.end();
8
return;
9
}
10
11
function sendFile(err, file, response)
12
{
13
if(err) return sendError(500, err, response);
14
response.writeHead(200);
15
response.write(file, "binary");
16
response.end();
17
}
18
19
function getFile(exists, response, localpath)
20
{
21
if(!exists) return sendError(404, 'erreur 404 -- page inconnue ! :( ', response);
22
fs.readFile(localpath, "binary",
23
function(err, file){ sendFile(err, file, response);});
24
}
25
26
function getFilename(request, response)
27
{
28
var urlpath = url.parse(request.url).pathname; // following domain or IP and port
29
if (urlpath=="/")
30
urlpath="/index.html";
31
//console.log(urlpath)
32
var localpath = path.join(__dirname+'/public/', urlpath); //
33
fs.exists(localpath, function(result) { getFile(result, response, localpath)});
34
}
35
var server = http.createServer(getFilename);
36
37
// ----------------- pour socket.io --------------
38
var io = require('socket.io')(server);
39
// -------
40
41
server.listen(80);
42
console.log("Server + IO actif...");
43
44
//-- fin zone serveur ----------------------
45
Remarque : Fonctionnement de Node.js
Contrairement au programme Arduino ou le code est exécuté en boucle ( fonction loop() de l'Arduino ) le programme du serveur est exécuté une seule fois.
Le code JavaScript du serveur contient des fonctions de "callback" qui sont déclenchées par des événements externes (ex : réception des requêtes html ...)
Ces fonctions continuent à fonctionner même lorsque le programme principal est terminé.
Elles sont reconnaissables car elles se terminent toujours par " } ) ; " , pour mettre fin à l'exécution de ces fonctions il faut arrêter votre programme Node.js (ctrl c )