SpeedtestJS
Speed-testJS คือการทดสอบความเร็วแบบ JavaScript ที่จะช่วยให้ผู้ใช้ได้เห็นความเร็วอินเทอร์เน็ตที่สมบูรณ์ยิ่งขึ้น ไม่เพียงแต่ให้เวลาแฝงแก่ผู้ใช้ ความเร็วในการอัพโหลดและดาวน์โหลด และบริบทเกี่ยวกับประสบการณ์อินเทอร์เน็ตทั้งหมดของพวกเขา การใช้ข้อมูลระดับความเร็วเพื่อเพิ่มตัวชี้วัดที่มีคุณสมบัติให้กับผลการทดสอบความเร็วมาตรฐาน ผู้ใช้จะรู้ว่าประสบการณ์ของตนไม่ดี ดี หรือดีเยี่ยม
การปรับใช้
สำหรับการปรับใช้กับเซิร์ฟเวอร์ทดสอบ โปรดดู README ใต้โฟลเดอร์ ansible
การตั้งค่าเซิร์ฟเวอร์ไคลเอ็นต์
แอปพลิเคชันประกอบด้วยซอฟต์แวร์โหนด/เอ็กซ์เพรสที่ทำงานบนเซิร์ฟเวอร์และจาวาสคริปต์/html ธรรมดาบนไคลเอนต์ เซิร์ฟเวอร์ขับเคลื่อนจุดสิ้นสุดการรีเซ็ต การสื่อสารผ่านเว็บซ็อกเก็ต การโต้ตอบกับฐานข้อมูล และเว็บไซต์ไคลเอ็นต์
เซิร์ฟเวอร์
Index.js เป็นจุดเริ่มต้นของแอปที่มีฟังก์ชันที่จำเป็นในการเรียกใช้แอปพลิเคชัน การตั้งค่าที่สำคัญในไฟล์นี้คือ:
ที่อยู่ IP และพอร์ต: เซิร์ฟเวอร์จะผูกเข้ากับที่อยู่ ipv4 และ ipv6 ของเครื่องโฮสต์ที่ใช้งานโดยอัตโนมัติ (เช่น app.listen(SERVERPORT,'::');) พอร์ต Addtionaly สามารถกำหนดได้ด้วย app.listen(ADDITIONALPORT);
คำขอ Http: การกำหนดค่า http ถูกกำหนดให้อนุญาตการโพสต์ http และคำขอข้ามโดเมน
WebSockets: การสื่อสารของ websockets ถูกกำหนดไว้
จุดสิ้นสุด REST: จุดสิ้นสุดที่เหลือจะถูกเปิดเผยเพื่อทำการทดสอบความเร็วให้เสร็จสิ้นและรวมถึงสิ่งต่อไปนี้:
- testplan: testplan จะส่งคืนข้อมูล json ที่มี ipv4, ipv6 ipaddresses และพอร์ตที่ใช้สำหรับจุดสิ้นสุดที่เหลือและเว็บซ็อกเก็ตที่ทำงานบนเซิร์ฟเวอร์และ ipAddress ของไคลเอ็นต์ คุณสมบัติการทดสอบความเร็วเพิ่มเติม (เช่น สามารถส่งคืนแฟล็กการกำหนดเส้นทางตามเวลาแฝงได้)
- เวลาแฝง: ส่งคืนข้อความปิงปองแบบง่าย
- ดาวน์โหลด: ข้อมูลไบนารีตามคำขอ
- อัพโหลด: ยอมรับโพสต์สำหรับการอัพโหลด
- downloadProbe: ส่งคืนขนาดการทดสอบแบนด์วิธการดาวน์โหลดที่แนะนำตามคำขอ
- เครื่องคิดเลข: ส่งคืนการคำนวณตามอาร์เรย์คำขอที่ให้สถิติเกี่ยวกับข้อมูล
- testServer: ใช้ในการกำหนดเส้นทางตามเวลาแฝง .. จะส่งคืน URL เซิร์ฟเวอร์ทดสอบที่สามารถใช้เพื่อค้นหาเซิร์ฟเวอร์ตู้เสื้อผ้าไปยังไคลเอนต์
การกำหนดค่า: การกำหนดค่าทั่วไป (พอร์ต, latencyBasedRouting,...) ได้รับการตั้งค่าใน index.js การปรับแต่งเฉพาะ (เช่น ฐานข้อมูล) สามารถวางไว้ใต้โฟลเดอร์กำหนดค่าได้
- พารามิเตอร์การกำหนดค่า
- จุดสิ้นสุดส่วนที่เหลือ
- เว็บซ็อกเก็ต
- โฟลเดอร์โมดูลประกอบด้วยโมดูลแบบกำหนดเองที่ใช้สำหรับแอปพลิเคชัน
ลูกค้า
ลูกค้า: แอปพลิเคชันไคลเอนต์อยู่ในโฟลเดอร์สาธารณะและประกอบด้วยจาวาสคริปต์ธรรมดา Index.html เป็นหน้าเริ่มต้นเริ่มต้นของแอปพลิเคชัน และจะมีตัวอย่างการทดสอบความเร็วแบนด์วิธตั้งแต่ต้นจนจบ ข้อมูลต่อไปนี้จะอธิบายโครงสร้างโฟลเดอร์ของแอปพลิเคชันไคลเอ็นต์:
- lib: โฟลเดอร์ lib มีไฟล์จาวาสคริปต์ที่ใช้ในการวัดแบนด์วิธและการวัดที่เกี่ยวข้อง
- ตัวอย่าง: โฟลเดอร์ตัวอย่างมีไฟล์ html ที่ใช้ทดสอบไฟล์จาวาสคริปต์การวัดในโฟลเดอร์ lib
- วัตถุ xmlhttprequest และ websocket ฐาน
- ชุดทดสอบที่แตกต่างกันโดยใช้ Base xmlhttprequest และอ็อบเจ็กต์ websocket พื้นฐาน
- ทดสอบ: โฟลเดอร์ทดสอบมีการทดสอบหน่วย
- uilib: ไฟล์จาวาสคริปต์เฉพาะสำหรับ UI
- img: รูปภาพสำหรับการทดสอบหรือ UI
การปรับใช้ด้วยตนเอง
Grunt ถูกใช้เพื่อจัดทำแพ็คเกจไฟล์และโฟลเดอร์ที่จำเป็นเพื่อปรับใช้แอปพลิเคชันไปยังเซิร์ฟเวอร์เพื่อเรียกใช้แอปพลิเคชัน ขั้นตอนแสดงอยู่ด้านล่าง:
- เรียกใช้แพ็คเกจ grunt จากโฟลเดอร์รูท
- tar, zip หรือบีบอัดโฟลเดอร์ dist ที่ได้
- ปรับใช้และยกเลิกการบีบอัดบนเซิร์ฟเวอร์ของคุณ
- รันโหนด index.js จากคอนโซล
กำลังเรียกใช้แอปพลิเคชัน
เพื่อเรียกใช้แอปพลิเคชันในเครื่อง
- โคลน repo
- รันการติดตั้ง npm จากโฟลเดอร์รูท
- รันโหนด index.js
- เรียกดูหมายเลข ipaddress:port (เช่น ภายในเครื่องจะเป็น http://localhost:port
ฐานข้อมูล
เพื่อตั้งค่า dynamodb ในเครื่อง
- ทำตามคำแนะนำในลิงก์เพื่อดาวน์โหลดและเรียกใช้ dynamodb ในเครื่อง http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html
- ตั้งค่าข้อมูลรับรอง AWS ภายในเครื่อง http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html
- เมื่อตั้งค่า Dynamodb ในเครื่องแล้ว ใช้สคริปต์ต่อไปนี้เพื่อสร้างตารางและแทรกข้อมูลลงใน dynamodb (เรียกใช้งานโหนดdatabase.jsจากเทอร์มินัล)
- ขณะดำเนินการสคริปต์ให้เปลี่ยนชื่อตารางและข้อมูลเซิร์ฟเวอร์