Node.js Introducere – Server HTTP

In articolul anterior am discutat despre diferența dintre modul de programare sincron și asincron.

Pentru cine nu are instalată o versiune Node.js, accesați pagină de download. Pentru începători recomand ultima versiune (unstable), că să puteți învăța și beneficia de toate funcțiile care au fost adăugate și să evitați folosirea celor care au fost scoase.

Vom folosi exemplul de pe site-ul oficial, îl vom restructura pentru a facilita explicarea lui și vom crea fișierul exemplu.js, ce conține:

var http = require('http');

var port = 9090;
var mesaj = "<h2>Node.js - exemplu server HTTP</h2>";

var userConectat = function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.write( mesaj );
  response.end();
};

var server = http.createServer( userConectat );
server.listen( port );

console.log('Accesati serverul: http://127.0.0.1:9090');

Ca să rulam fisierul:

node exemplu.js

Să disecam codul:

var http = require('http');

Funcția ‘require’ se folosește la încărcarea modulelor, în cazul nostru modulul ‘http’, care face parte din modulele standard.

var userConectat = function (request, response) { ... };

Funcția ‘userConectat’ în cazul nostru va fi un ‘callback’. Pe scurt va fi executată în interiorul altei funcții. Pentru cei familiarizați cu jQuery: $(‘button’).click( callback );

Funcția are 2 obiecte, request (care conține ‘HTTP Request’), respectiv response (care conține ‘HTTP Response’).

Vom folosi obiectul response pentru a transmite un mesaj userului:

  response.writeHead(200, {'Content-Type': 'text/plain'});

Trimitem codul 200 (HTTP status code), care reprezintă recepția cu succes a transmisiei, apoi informăm browserul despre tipul de codare al conținutului (MIME media type), în cazul nostru fiind text/plain. Dacă am fi trimis un string JSON foloseam application/json.

  response.write( mesaj );
  response.end();

Scriem mesajul nostru (response.write), apoi închidem conexiunea (response.end). Dacă nu închidem conexiunea browserul va rămâne suspendat până la încheierea transmisiei și nu va afișa mesajul.

var server = http.createServer( userConectat );

Funcția http.createServer creează un server HTTP în mod asincron (în afara loop-ului principal). Pentru fiecare user conectat la server se va executa funcția userConectat; funcția este executată în loop-ul principal, nu în mod asincron. Rețineți, totul în Node.js lucrează în paralel, mai puțin codul vostru.

server.listen( port );

Funcția server.listen menține serverul activ și așteaptă evenimente, în cazul nostru conexiunea pe portul ‘9090’. Dacă nu atașăm un event listner Node.js va termina execuția fișierului.

Spuneam că programarea în mod asincron prezintă un loop principal (Node.js), detectarea evenimentelor, în cazul nostru server.listen( port ) și manipularea evenimentelor userConectat.

Node.js este un mediu bazat pe evenimente, prin urmare, evenimentele sunt emise și recepționate pe diferite canale. În exemplul de mai sus, recepționarea unui eveniment este efectuată de către server.listen pe canalul ‘9090’. Fiecare conexiune emite evenimente, de aceea putem rescrie server = http.createServer( userConectat ) în felul următor:

var server = http.createServer();
server.on( 'request',  userConectat );

Urmeaza: Module și EventEmitter

Articol scris de Eugen Tudorancea

JavaScript Front-end developer/Server-side enthusiast Fondator navaru.ro

Un comentariu to “Node.js Introducere – Server HTTP”

  1. Foarte fain.

Show trackbacks

Ți-a plăcut articolul? Lasă un comentariu!

You can insert code snippets using BBcode:
[js].[/js] [html].[/html] [php].[/php] [css].[/css]
You can also use some HTML tags:
<blockquote>.</blockquote> <code>.</code> <a href="">.</a> <strong>.</strong> <em>.</em>

windows apple dropbox facebook twitter