Node.js Websockets เมื่อนำมารวมกันแล้ว เป็นการผสมผสานระหว่างเทคโนโลยีที่ได้รับความนิยมสองอย่างที่นักพัฒนาเว็บสามารถใช้เพื่อสร้างแอปพลิเคชันเว็บแบบเรียลไทม์ได้
นอกจากนี้ หากคุณต้องการแพลตฟอร์ม API ที่สามารถจัดการการนำเข้าไฟล์ประเภทต่างๆ ได้ ลองดาวน์โหลด Apidog! 👇 👇 👇
สิ่งสำคัญคือต้องเข้าใจว่า "Node.js WebSockets" หมายถึงเทคโนโลยีสองอย่างที่แตกต่างกันซึ่งถูกนำมาใช้ร่วมกันเพื่อสร้างแอปพลิเคชันเว็บแบบเรียลไทม์ ไม่ควรพิจารณาว่าเป็นเอนทิตีเดียว เพื่อไม่ให้เป็นการเสียเวลา เรามาทำความเข้าใจกันก่อนว่า Node.js และ WebSockets คืออะไรในแก่นแท้ของมัน
Node.js คืออะไร
Node.js เป็นสภาพแวดล้อมรันไทม์ JavaScript แบบโอเพนซอร์สและข้ามแพลตฟอร์มที่ช่วยให้ผู้ใช้สามารถเรียกใช้โค้ด JavaScript นอกเบราว์เซอร์ได้ ดังนั้น Node.js จึงไม่ได้จำกัดแอปพลิเคชันและระบบซอฟต์แวร์ต่างๆ ที่สามารถใช้ประโยชน์จากการเขียนโค้ด JavaScript ได้!

คุณสมบัติหลักที่ทำให้ Node.js น่าสนใจสำหรับนักพัฒนา
- JavaScript ทุกที่: ด้วย Node.js คุณสามารถใช้ภาษาเดียวกัน (JavaScript) สำหรับการพัฒนาทั้งส่วนหน้า (ฝั่งไคลเอนต์) และส่วนหลัง (ฝั่งเซิร์ฟเวอร์) ซึ่งให้ความสอดคล้องกันและลดต้นทุนการสลับ
- สถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์: Node.js จัดการคำขอพร้อมกันหลายรายการได้อย่างมีประสิทธิภาพโดยไม่บล็อก ทำให้เหมาะสำหรับการสร้างแอปพลิเคชันแบบเรียลไทม์และปรับขนาดได้
- ระบบนิเวศที่สมบูรณ์: Node.js ได้รับประโยชน์จากชุมชนขนาดใหญ่และกระตือรือร้น เนื่องจากผู้ใช้มีไลบรารีและเฟรมเวิร์กหลายพันรายการสำหรับฟังก์ชันการทำงานต่างๆ นอกจากนี้ คุณยังสามารถดูวิดีโอมากมายบน YouTube เพื่อขอความช่วยเหลือเกี่ยวกับ Node.js
- ความเข้ากันได้ข้ามแพลตฟอร์ม: Node.js สามารถทำงานบนแพลตฟอร์มต่างๆ ได้อย่างราบรื่น เช่น Windows, macOS, Linux และระบบปฏิบัติการหลักอื่นๆ
เมื่อใดที่คุณควรพิจารณาใช้ Node.js สำหรับโปรเจกต์ของคุณ
Node.js เป็นที่รู้จักกันเป็นหลักในการสร้างซอฟต์แวร์นอกเหนือจากหน้าเว็บแบบดั้งเดิม ดังนั้น คุณสามารถพิจารณาใช Node.js ในส่วนหนึ่งของซอฟต์แวร์ของคุณได้อย่างมาก หากคุณวางแผนที่จะมีกรณีการใช้งานดังกล่าว:
- การพัฒนาเว็บ: Node.js เก่งในการสร้างส่วนประกอบฝั่งเซิร์ฟเวอร์สำหรับแอปพลิเคชันเว็บ เช่น API การสร้างเนื้อหาแบบไดนามิก และคุณสมบัติแบบเรียลไทม์
- Microservices: Node.js สามารถช่วยสร้างบริการขนาดเล็กที่เป็นอิสระซึ่งสามารถปรับใช้และปรับขนาดได้อย่างง่ายดาย
- เครื่องมือบรรทัดคำสั่ง: Node.js สามารถช่วยให้คุณทำงานอัตโนมัติและสร้างยูทิลิตี้ระบบได้
- Internet of Things (IoT): พัฒนาแอปพลิเคชันสำหรับอุปกรณ์ที่เชื่อมต่อเนื่องจากความสามารถแบบเรียลไทม์
- การสตรีมข้อมูล: ประมวลผลและวิเคราะห์สตรีมข้อมูลอย่างมีประสิทธิภาพโดยใช้ Node.js
ประโยชน์ของการใช้ Node.js เป็นส่วนหนึ่งของซอฟต์แวร์ของคุณ
- เรียนรู้ได้ง่าย: หากคุณรู้อยู่แล้วว่า JavaScript การเรียนรู้ Node.js จะค่อนข้างง่าย
- ชุมชนและทรัพยากรขนาดใหญ่: Node.js มีไลบรารี เฟรมเวิร์ก และบทช่วยสอนมากมายที่ให้การสนับสนุนที่เป็นประโยชน์และแนวทางปฏิบัติที่ดีที่สุดแก่ผู้ใช้ Node.js ใหม่และที่มีอยู่
- ปรับขนาดได้และหลากหลาย: Node.js สามารถปรับให้เข้ากับแอปพลิเคชันประเภทต่างๆ และปรับขนาดได้ดีเมื่อฐานผู้ใช้เติบโตขึ้น
WebSockets คืออะไร
WebSockets เป็นโปรโตคอลการสื่อสารที่อนุญาตให้มีการสื่อสารแบบเรียลไทม์ไปมามาระหว่าง ไคลเอนต์ (เช่น เว็บเบราว์เซอร์) และ เซิร์ฟเวอร์ นอกจากนี้ ยังช่วยให้ทั้งไคลเอนต์และเซิร์ฟเวอร์สามารถส่งและรับข้อความพร้อมกันได้ ทำให้ได้รับประสบการณ์ที่โต้ตอบได้และตอบสนองได้ดีขึ้นสำหรับซอฟต์แวร์
โปรดทราบว่า WebSockets เป็นโปรโตคอล ซึ่งหมายความว่าจะไม่ตกอยู่ในประเภทไฟล์ใดๆ อย่างไรก็ตาม คุณยังคงต้องใส่ใจกับ ความปลอดภัยของ WebSocket!
คุณสมบัติหลักที่แตกต่าง WebSockets จากโปรโตคอลอื่นๆ
- การสื่อสารแบบ Full-duplex: ด้วยทั้งไคลเอนต์และเซิร์ฟเวอร์ที่ส่งและรับข้อความพร้อมกัน WebSockets สามารถให้การสื่อสารแบบเรียลไทม์ที่ราบรื่นได้
- การเชื่อมต่อแบบถาวร: แทนที่จะเปิดและปิดการเชื่อมต่อสำหรับแต่ละข้อความ WebSockets จะสร้างการเชื่อมต่อแบบถาวรเดียวระหว่างไคลเอนต์และเซิร์ฟเวอร์ ซึ่งช่วยลดค่าใช้จ่ายและปรับปรุงประสิทธิภาพ
- การแลกเปลี่ยนข้อมูลแบบเรียลไทม์: ข้อมูลจะถูกส่งและรับทันที สร้างประสบการณ์ที่รวดเร็วและตอบสนองได้ดีกว่าคำขอ HTTP แบบดั้งเดิมมาก
- ลดภาระเซิร์ฟเวอร์: ด้วยการเชื่อมต่อแบบถาวรและการสื่อสารแบบพุช เซิร์ฟเวอร์ไม่จำเป็นต้องรอคำขอของไคลเอนต์ ซึ่งช่วยลดภาระงานและช่วยให้สามารถจัดการการเชื่อมต่อได้มากขึ้น
ประโยชน์ที่เป็นไปได้ที่คุณจะได้รับจากการใช้ WebSockets
- ความยืดหยุ่น: WebSockets สามารถใช้กับภาษาการเขียนโปรแกรมและแพลตฟอร์มต่างๆ เช่น Python, JavaScript, Java และอื่นๆ ซึ่งทำให้มีความหลากหลายและปรับให้เข้ากับสภาพแวดล้อมการพัฒนาและแอปพลิเคชันต่างๆ ได้
- ความหน่วงต่ำกว่า: การเชื่อมต่อแบบเปิดและถาวรช่วยลดความล่าช้าและทำให้มั่นใจได้ว่าข้อความจะถูกส่งเกือบจะในทันที ซึ่งมีความสำคัญอย่างยิ่งสำหรับแอปพลิเคชันที่ต้องอาศัยการเชื่อมต่อที่สอดคล้องกัน เช่น การสตรีมสด การแก้ไขร่วมกัน และการอัปเดตข้อมูลทางการเงินแบบเรียลไทม์
- ประสิทธิภาพและการปรับขนาด: WebSockets สร้างการเชื่อมต่อแบบถาวร ซึ่งช่วยลดความจำเป็นในการสร้างและปิดการเชื่อมต่อซ้ำๆ ซึ่งนำไปสู่ประสิทธิภาพที่เพิ่มขึ้นและการปรับขนาดที่ดีขึ้น ทำให้ WebSockets เหมาะอย่างยิ่งสำหรับการจัดการการเชื่อมต่อพร้อมกันจำนวนมากและการแลกเปลี่ยนข้อมูลแบบเรียลไทม์
วิธีรวม Node.js และ WebSockets เพื่อสร้างแอปพลิเคชันเว็บ
นี่คือคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีการสร้างแอปพลิเคชันเว็บแบบเรียลไทม์ด้วย Node.js และ WebSockets!
- เลือกไลบรารี:
มีไลบรารียอดนิยมสองสามรายการที่คุณสามารถเลือกใช้เพื่อช่วยให้คุณใช้งาน WebSockets ใน Node.js ได้:
- ws: ไลบรารีน้ำหนักเบาพร้อม API ที่ใช้งานง่าย เหมาะสำหรับโปรเจกต์ที่ง่ายกว่า
- socket.io: มีคุณสมบัติเพิ่มเติม เช่น ห้อง, เนมสเปซ และการออกอากาศ ทำให้เหมาะสำหรับแอปพลิเคชันที่ซับซ้อน
- express-ws: ส่วนขยายสำหรับเฟรมเวิร์ก Express ซึ่งนำเสนอการผสานรวมกับแอปพลิเคชัน Express ที่มีอยู่
2. ตั้งค่าเซิร์ฟเวอร์ Node.js ของคุณ:
สร้างเซิร์ฟเวอร์ Node.js โดยใช้โมดูลเช่น http
หรือ express
เซิร์ฟเวอร์นี้จะรับฟังการเชื่อมต่อที่เข้ามาและจัดการเส้นทางและตรรกะฝั่งเซิร์ฟเวอร์อื่นๆ
3. ใช้ WebSocket:
- ใช้ไลบรารีที่คุณเลือกเพื่อสร้างเซิร์ฟเวอร์ WebSocket โดยระบุพอร์ตที่จะรับฟัง
ในขั้นตอนนี้ คุณควรกำหนดตัวจัดการเหตุการณ์สำหรับสถานการณ์ต่างๆ ด้วย:
- การเชื่อมต่อ: เมื่อไคลเอนต์เชื่อมต่อ WebSocket จะจัดการการตรวจสอบสิทธิ์ การอนุญาต และการแลกเปลี่ยนข้อมูลเบื้องต้น
- ข้อความ: เมื่อไคลเอนต์ส่งข้อความ ให้ประมวลผล ออกอากาศไปยังไคลเอนต์อื่นๆ (หากจำเป็น) และส่งการตอบสนองหากจำเป็น
- การตัดการเชื่อมต่อ: WebSockets สามารถจัดการการตัดการเชื่อมต่อและการทำความสะอาดได้อย่างราบรื่น
4. การผสานรวมฝั่งไคลเอนต์:
ในฝั่งไคลเอนต์ (โดยปกติในเว็บเบราว์เซอร์) คุณสามารถใช้ไลบรารี JavaScript เช่น ws
หรือ socket.io-client
เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ WebSocket ของคุณ
- สร้างการเชื่อมต่อและจัดการการตอบสนองของเซิร์ฟเวอร์และข้อความที่ได้รับ
- ใช้ตัวจัดการเหตุการณ์ในฝั่งไคลเอนต์เพื่อตอบสนองต่อข้อมูลและการอัปเดตที่เข้ามา
โค้ดสนิปเพ็ตของ Node.js และ WebSockets (ตัวอย่างแอปพลิเคชันแชทพื้นฐาน)
แอปพลิเคชันเว็บส่วนใหญ่ที่คุณสามารถหาได้ในปัจจุบันมีส่วนหน้าและส่วนหลังที่สอดคล้องกัน นี่คือตัวอย่างของเทคโนโลยี Node.js และ WebSockets ที่ทำงานร่วมกันในตัวอย่างแอปพลิเคชันแชทง่ายๆ
โค้ดฝั่งเซิร์ฟเวอร์ (ส่วนหลัง) [Node.js]
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', (ws) => {
console.log('Client connected');
ws.on('message', (message) => {
console.log(`Client message: ${message}`);
wss.clients.forEach((client) => {
if (client.readyState === WebSocket.OPEN) {
client.send(message);
}
});
});
ws.on('close', () => {
console.log('Client disconnected');
});
});
console.log('WebSocket server listening on port 8080');
คำอธิบายโค้ด:
ws
: นำเข้าไลบรารีws
- ตัวแปร
wss
สร้างเซิร์ฟเวอร์ WebSocket โดยใช้WebSocket.Server
บนพอร์ต 8080 - เหตุการณ์
connection
: เมื่อไคลเอนต์เชื่อมต่อ จะบันทึกข้อความและกำหนดตัวจัดการเหตุการณ์สำหรับmessage
และclose
- เหตุการณ์
message
จะบันทึกข้อความที่ได้รับ วนซ้ำผ่านไคลเอนต์ที่เชื่อมต่อทั้งหมด และส่งข้อความไปยังไคลเอนต์ที่เปิดอยู่แต่ละรายการ - เหตุการณ์
close
บันทึกข้อความเมื่อไคลเอนต์ตัดการเชื่อมต่อ
โค้ดฝั่งไคลเอนต์ (ส่วนหน้า) [Javascript]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WebSocket Chat</title>
</head>
<body>
<input type="text" id="message" placeholder="Type your message..." />
<button id="send">Send</button>
<div id="messages"></div>
<script>
const ws = new WebSocket('ws://localhost:8080');
ws.onopen = () => {
console.log('Connected to server');
};
ws.onmessage = (event) => {
const message = event.data;
console.log(`Received message: ${message}`);
const messagesDiv = document.getElementById('messages');
messagesDiv.innerHTML += `<p>${message}</p>`;
};
const sendButton = document.getElementById('send');
sendButton.addEventListener('click', () => {
const messageInput = document.getElementById('message');
const message = messageInput.value;
ws.send(message);
messageInput.value = '';
});
</script>
</body>
</html>
คำอธิบายโค้ด:
- สร้างการเชื่อมต่อ WebSocket กับเซิร์ฟเวอร์โดยใช้
ws
- เหตุการณ์
open
จะบันทึกข้อความเมื่อสร้างการเชื่อมต่อ - เหตุการณ์
message
จะบันทึกข้อความที่ได้รับและแสดงในองค์ประกอบ HTML ที่มี IDmessages
- เหตุการณ์คลิกปุ่ม
send
จะรับข้อความจากช่องป้อนข้อมูล และส่งไปยังเซิร์ฟเวอร์โดยใช้ws.send
และล้างช่องป้อนข้อมูล
การสร้าง API ด้วย Node.js และ WebSockets (แสดงด้วยโค้ดสนิปเพ็ต)
คุณยังสามารถสร้าง API ของคุณเองเพื่อใช้ภายในแอปพลิเคชันเว็บที่คุณเพิ่งสร้างขึ้นได้! (โปรดทราบว่าโค้ดที่ให้ไว้ในบทความนี้มีวัตถุประสงค์เพื่อการสาธิตเท่านั้น)
1. ตั้งค่าสภาพแวดล้อม Node.js:
- ติดตั้ง Node.js และ npm (Node Package Manager)
- สร้างไดเรกทอรีโปรเจกต์และเริ่มต้น:
npm init -y
2. ติดตั้งไลบรารีที่จำเป็น:
คุณจะต้องติดตั้งไลบรารี ws
สำหรับ WebSockets โดยเรียกใช้โค้ดบรรทัดนี้: npm install ws
คุณจะต้องติดตั้งเว็บเฟรมเวิร์กสำหรับการกำหนดเส้นทางและการจัดการคำขอ HTTP เช่น การใช้ Express ผ่านโค้ดบรรทัดนี้: npm install express
3. สร้างเซิร์ฟเวอร์ WebSocket (JavaScript):
const WebSocket = require('ws');
const express = require('express'); // If using Express
const app = express(); // If using Express
const wss = new WebSocket.Server({ port: 8080 });
// HTTP request handling (if using Express)
app.get('/', (req, res) => {
res.send('Hello, world!');
});
// WebSocket connection handling
wss.on('connection', (ws) => {
console.log('Client connected');
ws.on('message', (message) => {
console.log(`Received message: ${message}`);
// Process the message and potentially send a response
});
ws.on('close', () => {
console.log('Client disconnected');
});
});
// Start the server
app.listen(8080, () => {
console.log('Server listening on port 8080');
});
หลังจากขั้นตอนนี้ คุณสามารถเข้าถึงเซิร์ฟเวอร์ WebSocket ผ่าน WebSocket URL เช่น ws://localhost:8080
4. กำหนดจุดสิ้นสุด API (JavaScript):
ws.on('message', (message) => {
const data = JSON.parse(message);
const action = data.action;
if (action === 'getData') {
ws.send(JSON.stringify({ data: 'Some data' }));
} else if (action === 'sendMessage') {
// Handle message sending logic
}
});
5. สร้างการโต้ตอบฝั่งไคลเอนต์ (JavaScript):
const ws = new WebSocket('ws://localhost:8080');
ws.onopen = () => {
console.log('Connected to server');
ws.send(JSON.stringify({ action: 'getData' }));
};
ws.onmessage = (event) => {
const response = JSON.parse(event.data);
console.log(response);
};
Apidog - แพลตฟอร์ม API สำหรับการทดสอบในอุดมคติ
เมื่อคุณสร้างแอปพลิเคชันเว็บ Node.js WebSocket ของคุณแล้ว คุณจะต้องทดสอบเพื่อให้แน่ใจว่าทำงานตามที่ตั้งใจไว้
Apidog เป็นโซลูชันแบบครบวงจรที่สมบูรณ์แบบสำหรับปัญหา API ทั้งหมดของคุณ คุณไม่เพียงแต่สามารถทดสอบจุดสิ้นสุดเดียวของ API ได้เท่านั้น แต่คุณยังสามารถสร้างสถานการณ์การทดสอบหลายขั้นตอนเพื่อให้แน่ใจว่า API ของคุณพร้อมสำหรับการเผยแพร่!

เนื่องจากคุณมีเซิร์ฟเวอร์ WebSocket ที่ทำงานบน URL อยู่แล้ว (เนื่องจากบทความนี้ใช้ URL ws://localhost:8080
) เราสามารถเริ่มต้นด้วยการสร้างคำขอ WebSocket!
การสร้างคำขอ WebSocket โดยใช้ Apidog

ขั้นแรก สร้างคำขอ API ใหม่เพื่อทดสอบ Node.js WebSocket API หรือแอปพลิเคชันของคุณโดยเฉพาะ คุณยังสามารถใช้ทางลัด Ctrl + T
เพื่อสร้างคำขอใหม่ได้ทันที

คุณควรจะเห็นคำขอที่ว่างเปล่าและไม่มีชื่อ ที่นี่ คุณสามารถสร้าง URL API เฉพาะ ตั้งค่าเมธอด HTTP ที่ต้องการ และรวมพารามิเตอร์แบบสอบถามที่คุณวางแผนจะทดสอบ Node.js WebSocket API หรือแอปพลิเคชันของคุณด้วย
บทสรุป
การรวมกันของเทคโนโลยี Node.js และ WebSocket สามารถช่วยให้นักพัฒนาสร้างแอปพลิเคชันที่น่าสนใจและมีประโยชน์ได้ โดยเฉพาะอย่างยิ่ง พวกเขามีประสิทธิภาพในการเปิดใช้งานฟังก์ชันการทำงานต่างๆ เช่น ห้องแชทแบบเรียลไทม์และการสตรีมสด!
Apidog ยังสามารถรองรับการสร้างและการปรับเปลี่ยนคำขอ WebSocket ได้ทุกเมื่อที่จำเป็น นอกเหนือจากคำขอแล้ว ผู้ใช้ยังสามารถสร้าง ทดสอบ แก้ไขข้อบกพร่อง และจำลอง API ด้วย Apidog ได้