Node.js - moduł sieciowy
Co to jest serwer WWW?
Serwer WWW to aplikacja, która obsługuje żądania HTTP wysyłane przez klienta HTTP, podobnie jak przeglądarki internetowe, i zwraca strony internetowe w odpowiedzi do klientów. Serwery internetowe zwykle dostarczają dokumenty html wraz z obrazami, arkuszami stylów i skryptami.
Większość serwerów WWW obsługuje skrypty po stronie serwera, używając języków skryptowych lub przekierowując zadanie do serwera aplikacji, który pobiera dane z bazy danych i wykonuje złożoną logikę, a następnie wysyła wynik do klienta HTTP za pośrednictwem serwera WWW.
Serwer WWW Apache jest jednym z najczęściej używanych serwerów WWW. Jest to projekt open source.
Architektura aplikacji internetowych
Aplikacja internetowa jest zwykle podzielona na cztery warstwy -
Client - Ta warstwa składa się z przeglądarek internetowych, przeglądarek mobilnych lub aplikacji, które mogą wysyłać żądania HTTP do serwera internetowego.
Server - W tej warstwie znajduje się serwer WWW, który może przechwytywać żądania wysyłane przez klientów i przekazywać im odpowiedź.
Business- Ta warstwa zawiera serwer aplikacji, który jest używany przez serwer WWW do wykonania wymaganego przetwarzania. Ta warstwa współdziała z warstwą danych za pośrednictwem bazy danych lub niektórych programów zewnętrznych.
Data - Ta warstwa zawiera bazy danych lub inne źródła danych.
Tworzenie serwera WWW przy użyciu Node
Node.js udostępnia plik httpmoduł, za pomocą którego można stworzyć klienta HTTP serwera. Poniżej znajduje się minimalna struktura serwera HTTP, który nasłuchuje na porcie 8081.
Utwórz plik js o nazwie server.js -
File: server.js
var http = require('http');
var fs = require('fs');
var url = require('url');
// Create a server
http.createServer( function (request, response) {
// Parse the request containing file name
var pathname = url.parse(request.url).pathname;
// Print the name of the file for which request is made.
console.log("Request for " + pathname + " received.");
// Read the requested file content from file system
fs.readFile(pathname.substr(1), function (err, data) {
if (err) {
console.log(err);
// HTTP Status: 404 : NOT FOUND
// Content Type: text/plain
response.writeHead(404, {'Content-Type': 'text/html'});
} else {
//Page found
// HTTP Status: 200 : OK
// Content Type: text/plain
response.writeHead(200, {'Content-Type': 'text/html'});
// Write the content of the file to response body
response.write(data.toString());
}
// Send the response body
response.end();
});
}).listen(8081);
// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');
Następnie stwórzmy następujący plik html o nazwie index.htm w tym samym katalogu, w którym utworzyłeś server.js.
File: index.htm
<html>
<head>
<title>Sample Page</title>
</head>
<body>
Hello World!
</body>
</html>
Teraz uruchommy server.js, aby zobaczyć wynik -
$ node server.js
Sprawdź dane wyjściowe.
Server running at http://127.0.0.1:8081/
Wyślij żądanie do serwera Node.js.
Otwórz http://127.0.0.1:8081/index.htm w dowolnej przeglądarce, aby zobaczyć następujący wynik.
Sprawdź dane wyjściowe na końcu serwera.
Server running at http://127.0.0.1:8081/
Request for /index.htm received.
Tworzenie klienta WWW przy użyciu Node
Klienta internetowego można utworzyć za pomocą httpmoduł. Sprawdźmy następujący przykład.
Utwórz plik js o nazwie client.js -
File: client.js
var http = require('http');
// Options to be used by request
var options = {
host: 'localhost',
port: '8081',
path: '/index.htm'
};
// Callback function is used to deal with response
var callback = function(response) {
// Continuously update stream with data
var body = '';
response.on('data', function(data) {
body += data;
});
response.on('end', function() {
// Data received completely.
console.log(body);
});
}
// Make a request to the server
var req = http.request(options, callback);
req.end();
Teraz uruchom plik client.js z innego terminala poleceń innego niż server.js, aby zobaczyć wynik -
$ node client.js
Sprawdź dane wyjściowe.
<html>
<head>
<title>Sample Page</title>
</head>
<body>
Hello World!
</body>
</html>
Sprawdź dane wyjściowe na końcu serwera.
Server running at http://127.0.0.1:8081/
Request for /index.htm received.