Dark mode
net
net เป็นโมดูลในตัวของ Node.js ที่ให้ความสามารถในการสร้าง TCP server และ client สำหรับการสื่อสารแบบ connection-oriented
import { createServer, createConnection, connect } from 'node:net';
API | คำอธิบาย | ลักษณะ | คำอธิบายเพิ่มเติม |
---|---|---|---|
createServer | สร้าง TCP server | Asynchronous | ใช้รับการเชื่อมต่อจาก clients |
createConnection | สร้าง TCP client connection | Asynchronous | สำหรับเชื่อมต่อไปยัง TCP server |
connect | สร้าง TCP client connection | Asynchronous | alias ของ createConnection |
Socket | Class สำหรับ TCP socket | Asynchronous | ใช้จัดการการเชื่อมต่อและการรับส่งข้อมูล |
Server | Class สำหรับ TCP server | Asynchronous | ใช้จัดการการเชื่อมต่อจาก clients |
ตัวอย่าง
สร้าง TCP Server พื้นฐาน
js
import { createServer } from "net";
// สร้าง TCP server
const server = createServer((socket) => {
console.log("Client connected");
// รับข้อมูลจาก client
socket.on("data", (data) => {
console.log(`Received: ${data}`);
// ส่งข้อมูลกลับ
socket.write(`Echo: ${data}`);
});
// เมื่อ client ปิดการเชื่อมต่อ
socket.on("end", () => {
console.log("Client disconnected");
});
});
// เริ่มฟังที่ port 3000
server.listen(3000, () => {
console.log("TCP Server listening on port 3000");
});
สร้าง TCP Client
js
import { connect } from "net";
// เชื่อมต่อไปยัง TCP server
const client = connect({ port: 3000 }, () => {
console.log("Connected to server");
// ส่งข้อมูลไปยัง server
client.write("Hello TCP Server!");
});
// รับข้อมูลจาก server
client.on("data", (data) => {
console.log(`Server says: ${data}`);
// ปิดการเชื่อมต่อ
client.end();
});
client.on("end", () => {
console.log("Disconnected from server");
});
ใช้ Socket สำหรับการสื่อสาร
js
import { Socket } from "net";
// สร้าง socket ใหม่
const socket = new Socket();
// เชื่อมต่อไปยัง server
socket.connect(3000, "localhost", () => {
console.log("Connected");
// ส่งข้อมูลหลายครั้ง
socket.write("First message");
socket.write("Second message");
});
// รับข้อมูล
socket.on("data", (data) => {
console.log("Received:", data.toString());
});
// จัดการ error
socket.on("error", (err) => {
console.error("Socket Error:", err);
});
ตรวจสอบ Port ที่ใช้งานได้
js
import { createServer } from "net";
function checkPort(port) {
return new Promise((resolve) => {
const server = createServer()
.listen(port)
.on("listening", () => {
server.close();
resolve(true); // พอร์ตว่าง
})
.on("error", (err) => {
resolve(false); // พอร์ตถูกใช้งาน
});
});
}
// ตัวอย่างการใช้งาน
async function findAvailablePort(startPort, endPort) {
for (let port = startPort; port <= endPort; port++) {
if (await checkPort(port)) {
return port;
}
}
throw new Error("No available ports found");
}
findAvailablePort(3000, 4000)
.then(port => console.log("Available port:", port))
.catch(err => console.error(err));
ตั้งค่า Keep-Alive
js
import { connect } from "net";
const client = connect({
port: 3000,
host: "localhost",
keepAlive: true,
keepAliveInitialDelay: 10000, // 10 วินาที
});
client.on("connect", () => {
console.log("Connected with keep-alive");
});