SpeedtestJS
Speed-testJS هو اختبار سرعة يعتمد على JavaScript وسيوفر للمستخدمين رؤية غنية لسرعة الإنترنت لديهم. تزويد المستخدمين ليس فقط بزمن الاستجابة وسرعات التحميل والتنزيل والسياق المحيط بتجربتهم على الإنترنت بالكامل. باستخدام بيانات مستوى السرعة لإضافة مقياس مؤهل إلى نتائج اختبار السرعة القياسية، سيعرف المستخدمون الآن ما إذا كانت تجربتهم سيئة أم جيدة أم رائعة
النشر
للنشر على خادم اختبار، راجع الملف README ضمن المجلد غير المرئي .
إعداد خادم العميل
يتكون التطبيق من برنامج العقدة/السريع الذي يقوم بتشغيل الخادم وjavascript/html العادي على العميل. يقوم الخادم بإعادة تعيين نقاط النهاية واتصالات websocket وتفاعلات قاعدة البيانات وموقع العميل على الويب.
الخادم
Index.js هي نقطة البداية للتطبيق الذي يحتوي على الوظائف الضرورية لتشغيل التطبيق. الإعدادات الهامة في هذا الملف هي:
عنوان IP والمنافذ: سيرتبط الخادم تلقائيًا بعناوين ipv4 وipv6 للجهاز المضيف الذي تم نشره عليه (على سبيل المثال. app.listen(SERVERPORT,'::');). يمكن تعيين منافذ إضافية باستخدام app.listen(ADDITIONALPORT);
طلب Http: تم تعريف تكوين http للسماح بنشرات http والطلب عبر المجال.
WebSockets: يتم تعريف اتصال websockets
نقاط نهاية REST: يتم الكشف عن نقاط نهاية الراحة لإكمال اختبار السرعة وتتضمن ما يلي:
- testplan: سوف يقوم testplan بإرجاع بيانات json التي تحتوي على عناوين IPv4 وipv6 والمنافذ المستخدمة لنقاط النهاية ومآخذ الويب التي تعمل على الخادم وعنوان ipAddress الخاص بالعميل. أيضًا ميزات اختبار السرعة الإضافية (على سبيل المثال، يمكن إرجاع إشارات التوجيه المستندة إلى زمن الوصول)
- الكمون: إرجاع رسالة بونغ بسيطة
- التنزيل: البيانات الثنائية بناءً على الطلب
- تحميل: يقبل النشر للتحميلات
- downloadProbe: يُرجع حجم اختبار النطاق الترددي للتنزيل الموصى به بناءً على الطلب
- الآلة الحاسبة: تُرجع الحسابات بناءً على مصفوفة الطلب التي توفر إحصائيات على مسند الإسناد.
- testServer: يُستخدم في التوجيه المستند إلى زمن الوصول.. وسيُرجع عناوين URL لخوادم الاختبار التي يمكن استخدامها للعثور على خادم الخزانة للعميل
التكوين: يتم تعيين التكوين العام (المنافذ، وlatencyBasedRouting،...) في ملف Index.js. يمكن وضع التخصيص المحدد (أي قاعدة البيانات) ضمن مجلد التكوين
- معلمات التكوين
- نقاط نهاية الراحة
- WebSockets
- يحتوي مجلد الوحدات على وحدات مخصصة مستخدمة للتطبيق.
عميل
العميل: يوجد تطبيق العميل في المجلد العام ويتكون من جافا سكريبت عادي. Index.html هي صفحة البداية الافتراضية للتطبيق وستحتوي على مثال شامل لاختبار سرعة النطاق الترددي. فيما يلي وصف لبنية مجلد تطبيق العميل:
- lib: يحتوي مجلد lib على ملفات جافا سكريبت المستخدمة لقياس عرض النطاق الترددي والقياسات ذات الصلة.
- مثال: يحتوي مجلد المثال على ملفات html المستخدمة لاختبار ملفات جافا سكريبت للقياس في المجلد lib
- كائنات xmlhttprequest وwebsocket الأساسية
- مجموعات اختبار مختلفة تستخدم كائنات Base xmlhttprequest وwebsocket الأساسية
- الاختبار: يحتوي مجلد الاختبار على اختبارات الوحدة
- uilib: ملفات جافا سكريبت الخاصة بواجهة المستخدم.
- img: صور للاختبار أو ui
النشر اليدوي
يتم استخدام Grunt لحزم الملفات والمجلدات المطلوبة لنشر التطبيق على خادم لتشغيل التطبيق. الخطوات مذكورة أدناه:
- قم بتشغيل حزمة الناخر من المجلد الجذر
- tar أو ضغط أو ضغط مجلد dist الناتج
- نشر وفك الضغط على الخادم الخاص بك
- قم بتنفيذ العقدة Index.js من وحدة التحكم.
تشغيل التطبيق
لتشغيل التطبيق محليا
- استنساخ الريبو
- قم بتشغيل تثبيت 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 (تنفيذ قاعدة بيانات العقدة.js من المحطة الطرفية)
- أثناء تنفيذ البرنامج النصي، قم بتغيير اسم الجدول ومعلومات الخادم