ต้องใช้ Socketio ในโหนด socketio เป็นไลบรารีของ nodejs มันใช้ฟังก์ชัน nodejs เพื่อสรุปฟังก์ชันบางอย่างและอาศัย nodejs API บางตัว ดังนั้นจึงสามารถใช้ได้ใน nodejs เท่านั้น - เทคโนโลยีการแลกเปลี่ยนข้อมูลการสื่อสารทางโดยใช้ EngineIO ที่ชั้นล่างสุด
สภาพแวดล้อมการทำงานของบทความนี้: ระบบ Windows 10, nodejs เวอร์ชัน 16, คอมพิวเตอร์ Dell G3
Socketio เป็นไลบรารีของ nodejs ซึ่งเทียบเท่ากับฟังก์ชันอื่น ๆ ที่ใช้ฟังก์ชัน nodejs เพื่อสรุปฟังก์ชันบางอย่างเพื่อให้คุณใช้ ขึ้นอยู่กับ nodejs API บางตัว ดังนั้นจึงสามารถใช้ได้ภายใต้ nodejs เท่านั้น
SocketIO เป็นเทคโนโลยีการแลกเปลี่ยนข้อมูลการสื่อสารสองทางที่สร้างขึ้นระหว่างไคลเอนต์และเซิร์ฟเวอร์ โดยใช้ EngineIO ที่ด้านล่าง ไคลเอ็นต์ของ SocketIO ใช้ Engine.IO-Client และเซิร์ฟเวอร์ใช้ Engine.IO
ขยายความรู้
SocketIO ทำงานอย่างไร
เมื่อเบราว์เซอร์พยายามสร้าง SocketIO นั้น SocketIO จะใช้ xhr-polling เพื่อสร้างโพลแบบยาวก่อน เมื่อสร้างการโพลแบบยาวแล้ว ระบบจะอัปเกรดเป็นการเชื่อมต่อ WebSocket
เลเยอร์ด้านล่างของ SocketIO ถูกนำมาใช้โดยใช้ไลบรารี EngineIO ซึ่งห่อหุ้มโปรโตคอลซ็อกเก็ตของตัวเอง (เรียกว่าซ็อกเก็ต EIO ชั่วคราว) โดยใช้ WebSocket และ XMLHttprequest ซ็อกเก็ต EIO ที่สมบูรณ์ประกอบด้วยการเชื่อมต่อ XHR และ WebSocket หลายรายการ
ลูกค้า
ซ็อกเก็ต EIO ผ่านการจับมือ XHR (XMLHttprequest) ส่วนหน้าส่ง XHR เพื่อบอกเซิร์ฟเวอร์ว่าฉันต้องการเริ่มการสำรวจ XHR แบบยาว ข้อมูลที่ส่งคืนโดยแบ็กเอนด์ประกอบด้วยแฟล็กเปิด (แสดงด้วยหมายเลข 0) รวมถึงฟิลด์ sid และอัปเกรด ช่วงเวลาการ Ping และการหมดเวลาการ Ping
0{"sid": "8b7ab1ae-fbcf-4d23-8192-3c14a2a90721", "อัปเกรด": ["websocket"], "pingInterval": 10,000, "pingTimeout": 60000}sid คือ ID เซสชันของซ็อกเก็ต EIO นี้ เนื่องจากซ็อกเก็ต EIO หนึ่งรายการมีหลายคำขอ และแบ็กเอนด์จะเชื่อมต่อกับซ็อกเก็ต EIO หลายรายการพร้อมกัน sid จึงเทียบเท่ากับ SESSION ID
การอัพเกรดฟิลด์อื่น โดยปกติแล้ว ['websocket'] บ่งชี้ว่าวิธีการเชื่อมต่อสามารถอัพเกรดจากการโพลแบบยาวเป็น WebSocket
ส่วนหน้าเริ่มการโพล XHR แบบยาวเมื่อส่ง XHR แรก หากมีความจำเป็นต้องส่งและรับข้อมูลในขณะนี้ จะดำเนินการผ่านการโพลแบบยาว สิ่งที่เรียกว่าการโพลแบบยาวหมายความว่าส่วนหน้าจะส่งคำขอ และเซิร์ฟเวอร์จะรอจนกว่าจะมีข้อมูลที่ส่งคืนก่อนจะตอบสนอง ส่วนหน้าจะส่งคำขอถัดไปทันทีหลังจากได้รับการตอบกลับ สิ่งนี้ทำให้สามารถสื่อสารสองทางได้
หลังจากที่ส่วนหน้าได้รับการอัปเกรดแฮนด์เชคแล้ว EIO จะตรวจสอบว่าเบราว์เซอร์รองรับ WebSocket หรือไม่ หากรองรับ จะเริ่มต้นการเชื่อมต่อ WebSocket จากนั้นส่งข้อมูลที่มีเนื้อหาของโพรบและประเภทของ ping ไปยังเซิร์ฟเวอร์ผ่านทางนี้ เว็บซ็อกเก็ต หากเซิร์ฟเวอร์ส่งคืนข้อมูลด้วยเนื้อหาของโพรบและประเภทของ pong ในขณะนี้ ส่วนหน้าจะหยุดการโพล HTTP แบบยาวที่สร้างไว้ก่อนหน้านี้ และจะใช้ช่องทาง WebSocket เพื่อส่งและรับข้อมูลเท่านั้น
ในช่วงวงจรชีวิตของซ็อกเก็ต EIO มันจะปิงปองเป็นระยะๆ เพื่อทดสอบว่าเครือข่ายเป็นปกติหรือไม่
นี่คือโครงสร้างของเฟรม WebSocket สีเขียวกำลังส่ง และสีขาวกำลังรับ ตัวเลขก่อนหน้าคือประเภทแพ็กเก็ตข้อมูล 2 คือ ping, 3 คือ pong, 42 คือข้อความ
การเรียนรู้ที่แนะนำ: "วิดีโอสอน nodejs"
ข้างต้นคือรายละเอียดว่าต้องใช้ socketio ในโหนดหรือไม่ สำหรับข้อมูลเพิ่มเติม โปรดอ่านบทความอื่นๆ ที่เกี่ยวข้องบนเว็บไซต์นี้