ในยุคปัจจุบันที่เว็บแอปพลิเคชันไม่เพียงแค่เป็นแหล่งข้อมูลแบบสถิตย์ แต่ยังต้องมีความสามารถในการทำงานแบบเรียลไทม์ (Real-Time) ราวกับต้องสื่อสารได้ทุกลมหายใจของผู้ใช้งาน ให้ผู้ใช้ได้รับความสดใหม่ของข้อมูลแบบไม่มีช้า นี่จึงส่งผลให้ JavaScript Libraries และ Frameworks ต่างๆ ได้รับความสนใจ และมีบทบาทสำคัญอย่างยิ่งในการพัฒนา Real-Time Web Applications ครั้งนี้ เราจะมาพูดถึง 5 JavaScript Libraries ที่ช่วยเชื่อมต่อระหว่างผู้ใช้และเซิฟเวอร์ให้มีปฏิสัมพันธ์กันได้แบบเรียลไทม์
Socket.IO เป็นหนึ่งใน JavaScript Libraries ที่ได้รับความนิยมสูงสุดสำหรับการสร้าง Real-Time Web Applications ด้วยความสามารถเฉพาะทางในการจัดการการสื่อสารแบบวงกว้าง (Broadcasting) และการสร้างช่องทางการสื่อสารสองทิศทาง (Bidirectional communication) ระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ ด้วยโปรโทคอล WebSocket ที่ให้ข้อมูลทันทีโดยไม่ต้องรีเฟรชเพจ
// ตัวอย่างการใช้ Socket.IO
const io = require('socket.io')(server);
io.on('connection', (socket) => {
console.log('A user connected');
socket.on('message', (msg) => {
io.emit('message', msg);
});
socket.on('disconnect', () => {
console.log('user disconnected');
});
});
RethinkDB ไม่ใช่แค่ JavaScript Library แต่เป็นฐานข้อมูลหรือ Database ที่ออกแบบมาสำหรับโลกเรียลไทม์ เด่นด้วยฟีเจอร์ Changefeeds ที่ทำให้โปรแกรมเมอร์สามารถเขียนโค้ดได้ในรูปแบบที่ฐานข้อมูลจะแจ้งเตือนทุกครั้งที่มีการเปลี่ยนแปลง ทำให้สามารถปรับเปลี่ยนข้อมูลบนแอปพลิเคชันได้ทันทีไม่ต้องรอการรีเฟรช
// ตัวอย่างการใช้ RethinkDB
r.table('messages').changes().run(conn, (err, cursor) => {
cursor.each((err, message) => {
io.emit('message', message);
});
});
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM