HTTP Server

Ở phần giới thiệu bài học, bạn đã biết NodeJS được dùng để xây dựng các ứng dụng server hoặc các ứng dụng có đụng chạm tới network. Trong phần này, tôi sẽ hướng dẫn bạn cách tạo một HTTP server sử dụng NodeJS.

Để bắt đầu, hãy tạo một file webserver.js với nội dung như sau:

var http = require("http");
var server = http.createServer(function(request, response) {
  response.write("Xin chào!");
  response.end();
});

server.listen(8080);
console.log("NodeJS Server đang chạy trên cổng 8080");

Chạy

Trước khi đi vào giải thích về nội dung của chương trình trên chúng ta hãy chạy thử xem nó hoạt động như thế nào. Mở command prompt lên và chạy câu lệnh sau:

>node webserver.js

Sau khi chạy lệnh trên bạn sẽ thấy màn hình như sau:

Nodejs HTTP Server

Tiếp theo, bạn hãy mở trình duyệt nên và truy cập vào địa chỉ http://localhost:8080, bạn sẽ thấy trình duyệt hiển thị nội dung như hình dưới đây:

NodeJS HTTP Server

Chúng ta thấy font bị vỡ khi hiển thị trên trình duyệt, điều này là do HTML trả về từ server chưa quy định bộ ký tự hiển thị cho trình duyệt. Chúng ta sẽ fix điều này sớm ở phần tiếp theo còn bây giờ hãy phân tích chương trình ở trên.

Ở đoạn code trên, trước tiên tôi nạp vào thư viện http có sẵn trong NodeJS bằng câu lệnh:

var http = require('http');

Ngay sau dòng lệnh này, tôi tạo ra HTTP Server bằng cách gọi method createServer trong đó có truyền vào một hàm callback với 2 tham số là requestresponse:

  • request: tham số này chứa các thông tin về truy cập mà người gửi tới ví dụ như địa chỉ URL mà người dùng, cookies người dùng...
  • response: Tham số này được dùng gửi trả về nội dung cho trình duyệt (client).

Ở đây chúng ta gửi trả về trình duyệt bằng cách gọi method write từ response:

response.write('Xin Chào');

Tuy nhiên để hoàn thành quá trình kết nối giữa server (NodeJs) và client (trình duyệt) và tránh việc gửi nhiều hơn 1 header chúng ta cần phải gọi method end:

response.end();

Như vậy, bạn đã hoàn tất việc tạo ra một HTTP Server sử dụng NodeJs.

Để khắc phục lỗi font bị vỡ ở trên, bạn có thể xử lý đơn giản bằng cách thêm thẻ meta giúp trình duyệt xác định bộ ký tự cần sử dụng khi hiển thị nội dung, cập nhật đoạn mã trên bằng cách thêm vào các thẻ HTML tương ứng sau:

var http = require("http");
var server = http.createServer(function(request, response) {
    response.writeHead(200, {"Content-Type": "text/html"});
    response.write("<!DOCTYPE html>");
    response.write("<html>");
    response.write("<head>");
    response.write("<meta charset='utf-8'>");
    response.write("<title>Hello World Page</title>");
    response.write("</head>");
    response.write("<body>");
    response.write("Xin chào");
    response.write("</body>");
    response.write("</html>");
    response.end();
});

server.listen(8080);
console.log("Server đang chạy trên cổng 8080");

Ở đây, bạn thấy tôi có thêm vào một đoạn code khác với phần trên:

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

Câu lệnh này dùng để gửi thông tin header về cho trình duyệt, giúp trình duyệt xác định được loại văn bản mà nó sẽ hiển thị là text/html. Khi truy cập lại địa chỉ http://localhost:8080 bạn sẽ thấy font chữ được hiển thị bình thường.

Node.js Cơ Bản


Câu Hỏi


Mời Bạn Bè

Gửi email mời bạn bè

Viết Cùng Tác Giả

Bạn biết về chủ đề này và muốn tham gia viết cùng tác giả?
Tags: Node.js