Trong bài viết này, chúng ta sẽ thực hiện tạo ra một máy chủ web đơn giản với NodeJS và thảo luận về các công cụ sơ khai được sử dụng.
Cái máy chủ web trông như thế nào?
Theo mình đoán thì cái máy chủ web chắc là một cái laptop hay máy tính để bàn nào đó giống như chiếc mà bạn đang sử dụng. Bởi vì về cơ bản thì đó cũng chỉ là một chiếc máy tính thôi mà. Điều quan trọng ở đây là phần mềm - Chắc chắn ở đó có một phần mềm luôn luôn vận hành và chờ đợi yêu cầu được gửi đến từ các trình duyệt web để xử lý và gửi thông tin phản hồi lại. Và bây giờ thì chúng ta sẽ tạo ra một phần mềm như vậy chạy ngay trên chiếc máy tính của bạn.
Đầu tiên chúng ta cần copy/paste một đoạn code ví dụ từ trang chủ của NodeJS vào một tệp có tên là server.js
.
server.js
/* Creating a server */ const http = require('http'); const handleRequest = function(request, response) { response.statusCode = 200; response.setHeader('Content-Type', 'text/plain'); response.end('Hello NodeJS Server !');
}; const server = http.createServer(handleRequest); /* Start running server */ const port = 3000;
const hostname = '127.0.0.1'; const callback = function() { console.log('Server is running at...'); console.log('http://' + hostname + ':' + port + '/');
}; server.listen(port, hostname, callback);
Sau đó tại cửa sổ dòng lệnh, chúng ta chạy tệp server.js
để thử xem có gì được in ra trong console
không.
CMD
node server.js
:: kết quả:
:: 'Server is running at...'
:: 'http://127.0.0.1:3000/'
Terminal
node server.js
# kết quả:
# 'Server is running at...'
# 'http://127.0.0.1:3000/'
Rồi... xong! Bây giờ bạn thử dùng trình duyệt web truy xuất tới địa chỉ được in ra trong cửa sổ dòng lệnh xem.
[http://127.0.0.1:3000/](http://127.0.0.1:3000/
)
Nếu bạn đang có một thiết bị khác nữa ví dụ như điện thoại smartphone, máy tính bảng, hay một chiếc máy tính khác trong cùng mạng Wi-Fi, hãy thử dùng thiết bị đó để truy xuất theo đường dẫn:
http://địa.chỉ.IP.nội.bộ.máy.tính.của.bạn:3000/
Như vậy là chúng ta đã có một chiếc máy chủ web đúng nghĩa rồi phải không? Bây giờ nếu như bạn đang sử dụng một đường truyền internet với hợp đồng hơi xịn và được cấp một địa chỉ IP mạng cố định, thì bạn còn có thể nhờ bạn của bạn truy xuất từ một mạng nội bộ khác tới với đường dẫn để xem server
này đã hoạt động online
được chưa.
http://IP.nhà.mạng.cung.cấp/IP.nội.bộ:3000/
Rồi sau đó bạn có thể thuê một tên miền đẹp đẹp như kiểu tên-của-bạn.vn
và nhờ công ty phân phối tên miền xử lý giúp thao tác trỏ về địa chỉ trên; Như vậy là bạn đã có một trang web online
với chiếc máy chủ web miễn phí rồi.
Máy chủ web online miễn phí cho các ứng dụng NodeJS cỡ mini
Tới đây mình muốn giới thiệu tới bạn một trang web miễn phí host cho nhu cầu sử dụng đơn giản như làm blog cá nhân. Và đặc biệt là trang web này được tạo ra cho những người đang tự mầy mò học lập trình NodeJS như chúng ta.
Vậy là danh sách những công cụ miễn phí để học tập và làm việc của chúng ta đã lại dài thêm một chút. Glitch
hoàn toàn miễn phí với nhu cầu sử dụng đơn giản với tổng thời gian online của ứng dụng NodeJS mà bạn đặt tại đó là 1000 giờ/1 tháng
. Điều đáng nói là sau khi đăng ký tài khoản thành viên của Glitch
và tạo một dự án project
thì chúng ta có luôn một trình soạn thảo code online
.
Thanh điều khiển ở phía bên dưới màn hình cũng có phần mở cửa sổ dòng lệnh Terminal
và nút Preview
để mở và xem kết quả vận hành của trang web mà chúng ta đang xây dựng.
Mặt khác nữa là tên miền của Glitch
cũng khá đẹp phải không? Như vậy là có khả năng bạn sẽ không phải tốn tiền thuê tên miền cho trang blog cá nhân, và chiếc máy tính của bạn cũng có thể được nghỉ ngơi chứ không phải online 24/24.
Github Pages
thực sự cũng rất tuyệt cho nhu cầu blog cá nhân nhưng phần mềm ứng dụng ở phía server-side
được cố định là Jekyll
và chúng ta không thể thay đổi được. Sau khi xây dựng xong một blog đơn giản bằng NodeJS
và Glitch
, rất có thể chúng ta sẽ nghĩ tới việc làm một trang blog khác để tận dụng hết khả năng của Github Pages
.
Tuy nhiên thì bây giờ chúng ta nên đánh dấu và lưu lại Glitch
để dành thêm thời gian qua một vài bài viết nữa. Học thêm kiến thức về NodeJS đã nào.
Những điểm cần quan tâm trong đoạn code server đầu tiên
Về mặt tổng quan, phần code ví dụ mà chúng ta mới copy/paste từ trang chủ của NodeJS cũng không quá khó hiểu phải không? Ở đây chúng ta có 2 thao tác chính là:
- Tạo ra một object mô phỏng phần mềm có tên là
server
được gắn kèm một hàm xử lý yêu cầuhandleRequest
. - Khởi chạy phần mềm
server
bằng cách gọi phương thứclisten
với các giá trị truyền vào mô phỏng đường dẫn để truy cập tới trang web; Và một hàm gọi lạicallback
sẽ được thực hiện sau khi phần mềmserver
khởi động xong - tức là phương thứclisten
được thực hiện xong.
Về hàm gọi lại callback
thì chúng ta đã nói đến trong bài viết [JavaScript] Bài 11 - Hàm & Vùng. Tuy nhiên phần viết về hàm callback
thì mình bổ sung hơi muộn; Vì vậy nên nếu như bạn đọc bài đó từ sớm và không thấy nói tới callback
thì thông cảm cho mình nhé, mấy ngày gần đây mình đãng trí lắm.
Đoạn code khởi chạy phần mềm server
ở phía bên dưới trông khá dễ hiểu. Do đó điểm chính mà chúng ta cần quan tâm tới lúc này có lẽ là hàm xử lý handleRequest
. Bởi vì về cơ bản thì phần mềm này đã hoạt động được khi chúng ta gửi yêu cầu tới bằng cách dùng trình duyệt truy xuất vào địa chỉ http://127.0.0.1:3000/ với vai trò là một người dùng đang muốn xem nội dung của trang web. Việc cần làm bây giờ là chúng ta cần gửi trang chủ index.html
mà chúng ta đã có tới cho người dùng chứ không phải là một dòng thông báo như trong code ví dụ.
Cụ thể hơn là chúng ta sẽ cần tìm hiểu cách làm thế nào để truy xuất nội dung của một tệp index.html
đã được lưu trữ trong chiếc máy chủ của chúng ta. Rồi sau đó tiếp tục tìm hiểu cách làm thế nào để gửi nội dung đó theo dạng phản hồi lại yêu cầu của người dùng.
Bài viết của chúng ta tới đây cũng đã hơi dài quá rồi; Và để duy trì trọng tâm của bài về việc giới thiệu và khởi tạo một máy chủ NodeJS, chúng ta sẽ để dành thắc mắc mới nảy sinh cho bài sau. Hãy nghỉ giải lao một chút trước khi tiếp tục. Hẹn gặp lại bạn trong bài viết tiếp theo.
(Sắp đăng tải) [NodeJS] Bài 3 - Module File System
của NodeJS