ห้องแชทออนไลน์เป็นแพลตฟอร์มออนไลน์สำหรับการสื่อสารกับหลาย ๆ คน ด้วยการประดิษฐ์และวุฒิภาวะของเทคโนโลยีใหม่ ๆ มากขึ้นเรื่อย ๆ ห้องแชทออนไลน์ได้ใช้เทคโนโลยีที่หลากหลาย ฉันต้องการสรุปบทความนี้สั้น ๆ
ก่อนอื่นมาพูดคุยเกี่ยวกับเทคโนโลยีส่วนหน้า หนึ่งล่าสุดคือ WebSocket ที่ใช้ HTML5 ซึ่งใช้การสื่อสารแบบฟูลดูเพล็กซ์ระหว่างเบราว์เซอร์และเซิร์ฟเวอร์ โปรโตคอลการสื่อสาร WebSocket ถูกกำหนดให้เป็น RFC 6455 มาตรฐานโดย IETF ในปี 2011 และ WebSocket API ได้รับการกำหนดให้เป็นมาตรฐานโดย W3C ใน WebSocket API เบราว์เซอร์และเซิร์ฟเวอร์จะต้องจับมือกันเท่านั้นและจากนั้นช่องทางที่รวดเร็วจะเกิดขึ้นระหว่างเบราว์เซอร์และเซิร์ฟเวอร์ ข้อมูลสามารถส่งโดยตรงระหว่างทั้งสอง อย่างไรก็ตามเนื่องจาก WebSocket เป็น HTML5 API เบราว์เซอร์จำนวนมากยังไม่ได้รับการสนับสนุนดังนั้นวิธีนี้จึงไม่ได้ใช้เป็นพิเศษในขณะนี้ ประเภทที่สองคือ AJAX มันใช้วิธีการสำรวจ ทุกครั้งคุณไปที่เซิร์ฟเวอร์เพื่อดาวน์โหลดข้อมูลและตรวจสอบว่ามีการอัปเดตหรือไม่ ข้อได้เปรียบของมันคือการประมวลผลคำขอแบบอะซิงโครนัส (การซิงโครไนซ์สามารถตั้งค่าได้) และจะไม่บล็อกการดำเนินการอื่น ๆ ของผู้ใช้ ข้อเสียคือการสำรวจอย่างต่อเนื่องไม่เพียง แต่ใช้แบนด์วิดท์ แต่ยังใช้ทรัพยากรเทอร์มินัลและเซิร์ฟเวอร์มากเกินไป ยิ่งไปกว่านั้นเนื่องจากมีช่วงเวลาสำหรับการสำรวจ Ajax ข้อความที่ได้รับไม่ใช่เวลาจริงเพราะมันไม่ใช่ทริกเกอร์ข้อความและประสิทธิภาพของ Ajax นั้นต่ำที่สุด ประเภทที่สามคือเทคโนโลยีพุชที่ใช้เซิร์ฟเวอร์ (Comet) มันถูกเรียกว่า push แต่จริงๆแล้วมันเป็น pseudo push หลักการคือการสร้างการเชื่อมต่อที่ยาวนานระหว่างเทอร์มินัลและเซิร์ฟเวอร์ แผนกต้อนรับได้รับเนื้อหาโดยพิจารณาว่าเนื้อหาของการเชื่อมต่อที่ยาวนานนี้มีการเปลี่ยนแปลงหรือไม่ ข้อได้เปรียบคือมันใช้ทรัพยากรน้อยลงและมีประสิทธิภาพแบบเรียลไทม์ที่ดี ต้องได้รับการสนับสนุนเป็นพิเศษจากเซิร์ฟเวอร์และครอบครองการเชื่อมต่อเป็นเวลานาน ตอนนี้บริการมากขึ้นใช้เทคโนโลยีนี้
มาพูดถึงพื้นหลังกันเถอะ ห้องแชทเป็นแอพพลิเคชั่น IO สูงและฐานข้อมูลอาจเป็นคอขวดที่ใหญ่ที่สุด ลักษณะของการแชทคือมีข้อความสั้น ๆ มากมายคล้ายกับ Weibo ยิ่งไปกว่านั้นมันเป็นของระบบผู้ใช้หลายคน เมื่อผู้ใช้มีลำดับความสำคัญหากมีการใช้ฐานข้อมูลเชิงสัมพันธ์เช่น MySQL ความดันแบบสอบถามควรสูงมาก หากไม่มีข้อกำหนดพิเศษฉันเชื่อว่าบันทึกการแชทไม่จำเป็นต้องจัดเก็บอย่างถาวร ในเวลานี้ระบบจัดเก็บข้อมูลตามหน่วยความจำเช่น Memcache และ Redis สามารถมีบทบาทได้ ด้านล่างนี้เป็นห้องแชทออนไลน์ที่เรียบง่ายโดยอิงตาม AJAX+PHP+MEMCACHE ที่ฉันพัฒนาขึ้น
ในห้องแชทนี้บันทึกการแชททั้งหมดจะถูกเก็บไว้ใน Memcache ID สูงสุดของบันทึกการแชทจะถูกเก็บไว้ด้วย CID และบันทึกการแชทจะถูกเก็บไว้ใน MSGCID สำหรับการแทรกแต่ละระเบียน CID จะเพิ่มขึ้น 1. แผนกต้อนรับจะได้รับข้อมูลรูปแบบ JSON ผ่าน AJAX เนื่องจาก Memcache ขึ้นอยู่กับหน่วยความจำระบบโดยรวมจึงทำงานได้อย่างรวดเร็ว ด้านล่างคือซอร์สโค้ดของระบบ มีเพียงสองไฟล์ในระบบทั้งหมดซึ่งน้อยกว่า 10KB ด้วยกัน
ดาวน์โหลด wulin.com
https://github.com/hitoy/online-chatroom
ข้อกำหนดของระบบ:
1. ติดตั้ง memcache
2. ติดตั้งส่วนขยาย memcache บน PHP
3. เบราว์เซอร์สมัยใหม่ที่รองรับ JavaScript และ Ajax