Node.js Net cung cấp khả năng thực hiện lập trình socket. Chúng tôi có thể tạo ứng dụng trò chuyện hoặc giao tiếp ứng dụng máy khách và máy chủ bằng cách sử dụng lập trình socket trong Node.js. Mô-đun net Node.js chứa các chức năng để tạo cả máy chủ và máy khách.
Các bài viết liên quan:
Tổng quan về module Net trong Node.js
Module net
trong Node.js là một module tích hợp sẵn cung cấp các công cụ để xây dựng ứng dụng mạng, bao gồm cả máy chủ và khách hàng. Module này cung cấp các lớp và phương thức cho việc tạo và quản lý các kết nối mạng TCP hoặc UDP.
Xem thêm Module web trong Node.js
Module net
cho phép bạn tạo máy chủ TCP hoặc UDP, kết nối đến máy chủ từ một khách hàng và gửi/nhận dữ liệu qua các kết nối đã thiết lập. Bằng cách sử dụng net
, bạn có thể xây dựng các ứng dụng mạng đa nền tảng, như máy chủ web, ứng dụng chat, trò chơi trực tuyến và nhiều ứng dụng mạng khác.
Các tính năng chính của module net
bao gồm:
- Tạo máy chủ TCP và UDP: Bạn có thể sử dụng
net.createServer()
để tạo máy chủ TCP hoặc UDP và lắng nghe các kết nối hoặc gói tin từ khách hàng. - Tạo kết nối TCP và UDP: Bằng cách sử dụng
net.createConnection()
hoặcnet.connect()
, bạn có thể tạo kết nối TCP hoặc UDP tới máy chủ từ phía khách hàng. - Xử lý sự kiện kết nối và gửi/nhận dữ liệu: Module
net
cho phép bạn xử lý các sự kiện như ‘connection’, ‘data’, ‘end’, ‘error’, ‘close’ để quản lý các kết nối và truyền nhận dữ liệu qua các kết nối mạng. - Thiết lập và kiểm tra các thuộc tính của kết nối: Bạn có thể sử dụng các phương thức như
socket.setEncoding()
,socket.setTimeout()
,socket.setKeepAlive()
để thiết lập các thuộc tính của kết nối và kiểm tra trạng thái của kết nối.
Module net
là một phần quan trọng của Node.js khi bạn cần xây dựng các ứng dụng mạng. Nó cung cấp các công cụ mạnh mẽ để tạo và quản lý kết nối mạng TCP hoặc UDP.
Xem thêm Node.js Package Manager
Tạo máy chủ TCP sử dụng module Net
Để tạo máy chủ TCP sử dụng module net
trong Node.js, bạn có thể sử dụng phương thức net.createServer()
để tạo một đối tượng máy chủ và lắng nghe các kết nối từ khách hàng. Dưới đây là một ví dụ minh họa:
const net = require('net'); // Tạo máy chủ TCP const server = net.createServer((socket) => { // Xử lý sự kiện khi có kết nối từ khách hàng console.log('Client connected.'); // Gửi dữ liệu tới khách hàng socket.write('Hello from server!\r\n'); // Xử lý sự kiện nhận dữ liệu từ khách hàng socket.on('data', (data) => { console.log(`Received data from client: ${data}`); }); // Xử lý sự kiện khi kết nối bị đóng socket.on('end', () => { console.log('Client disconnected.'); }); }); // Lắng nghe các kết nối tới cổng 3000 const PORT = 3000; server.listen(PORT, () => { console.log(`Server listening on port ${PORT}`); });
Trong ví dụ trên, chúng ta tạo một máy chủ TCP bằng cách gọi net.createServer()
và truyền một hàm xử lý vào trong đó. Trong hàm xử lý, chúng ta có thể xử lý các sự kiện như ‘connection’, ‘data’, ‘end’ để gửi và nhận dữ liệu từ khách hàng. Máy chủ sẽ lắng nghe các kết nối tới cổng 3000 bằng cách gọi server.listen()
.
Xem thêm Hướng dẫn cài đặt Nodejs
Tạo máy chủ UDP sử dụng module Net
Để tạo máy chủ UDP sử dụng module net
trong Node.js, bạn có thể sử dụng phương thức net.createSocket()
để tạo một đối tượng socket UDP và lắng nghe các gói tin từ khách hàng. Dưới đây là một ví dụ minh họa:
const dgram = require('dgram'); // Tạo máy chủ UDP const server = dgram.createSocket('udp4'); // Xử lý sự kiện khi nhận được gói tin từ khách hàng server.on('message', (msg, rinfo) => { console.log(`Received message: ${msg} from ${rinfo.address}:${rinfo.port}`); // Gửi gói tin trả lại khách hàng const response = 'Hello from server!'; server.send(response, 0, response.length, rinfo.port, rinfo.address); }); // Xử lý sự kiện khi máy chủ sẵn sàng server.on('listening', () => { const address = server.address(); console.log(`Server listening on ${address.address}:${address.port}`); }); // Lắng nghe các gói tin tới cổng 3000 const PORT = 3000; server.bind(PORT);
Trong ví dụ trên, chúng ta tạo một máy chủ UDP bằng cách gọi dgram.createSocket()
và truyền loại socket UDP (trong trường hợp này là ‘udp4’) vào trong đó. Chúng ta xử lý sự kiện ‘message’ để nhận và xử lý các gói tin từ khách hàng. Sau đó, chúng ta gửi một gói tin trả lại khách hàng bằng cách gọi server.send()
. Máy chủ sẽ lắng nghe các gói tin tới cổng 3000 bằng cách gọi server.bind()
.
Xem thêm Tổng quan về Model TCP/IP
Ví dụ Node.js Net
Trong ví dụ này, chúng tôi đang sử dụng hai lời nhắc lệnh:
- Dấu nhắc lệnh Node.js cho máy chủ.
- Dấu nhắc lệnh mặc định của Window dành cho máy khách.
server:
File: net_socket_server.js
const net = require('net'); var server = net.createServer((socket) => { socket.end('goodbye ! see you again \n'); }).on('error', (err) => { // handle errors here throw err; }); // grab a random port. server.listen(() => { address = server.address(); console.log('opened server on port: %j', address); });
Mở dấu nhắc lệnh Node.js và chạy đoạn mã sau:
node net_socket_server.js
client:
File: net_client.js
const net = require('net'); const client = net.connect({port: 50302}, () => {//use same port of server console.log('connected to server!'); client.write('hello server!\r\n'); }); client.on('data', (data) => { console.log(data.toString()); client.end(); }); client.on('end', () => { console.log('disconnected from server'); });
Open Node.js command prompt and run the following code:
node net_client.js
Kết luận về node.js Net
Module Net trong Node.js là một công cụ mạnh mẽ để xây dựng các ứng dụng mạng dựa trên giao thức TCP và UDP. Dưới đây là một số điểm kết luận quan trọng về module Net:
- Module Net cung cấp các lớp và phương thức để tạo máy chủ và khách hàng mạng.
- Bằng cách sử dụng Net, bạn có thể tạo các ứng dụng mạng như máy chủ TCP, máy chủ UDP, khách hàng TCP và khách hàng UDP.
- Bạn có thể xử lý các sự kiện như ‘connection’, ‘message’ và ‘listening’ để xử lý kết nối, dữ liệu nhận được và sự kiện máy chủ sẵn sàng.
- Module Net hỗ trợ việc xử lý dữ liệu đồng bộ và không đồng bộ, cho phép bạn gửi và nhận dữ liệu qua mạng.
- Nó cung cấp các phương thức như
net.createServer()
vànet.createConnection()
để tạo máy chủ và kết nối tới máy chủ. - Net cũng hỗ trợ mã hóa SSL/TLS để bảo mật giao tiếp mạng.
Với module Net, bạn có thể xây dựng các ứng dụng mạng phức tạp và tùy chỉnh trong Node.js, cho phép giao tiếp và truyền thông dữ liệu qua mạng dễ dàng.
Xem thêm array_diff trong php là gì ?