تقنية
لذلك ، على المستوى الأساسي ، عند الاتصال ، يقوم بتنزيل صفحة الويب عبر HTTPS ، ثم يقوم الموقع والخادم بإنشاء اتصال WebSockets ، ثم يستخدم الموقع والخادم خادم STUN خارجيًا للتفاوض على اتصال WebRTC. ينشئ الموقع بعد ذلك قناة بيانات غير موثوقة باستخدام WebRTC ويرسل مجموعة من الحزم إلى الخادم الذي يسجلها ثم يرسلها مرة أخرى. ثم يسجل العميل أوقات اختبار الاتصال وتلك التي استعادها. يرسل الخادم أيضًا سجلاً عبر WebSockets للحزم التي تم إنشاؤها ، بحيث يمكنك معرفة فقدان حزمة التحميل مقابل فقدان حزمة التنزيل.
الخدمات المستخدمة
إذن ، فيما يتعلق بالتقنيات والخدمات المحددة المستخدمة:
- يتم توفير شهادة SSL بواسطة Let's Encrypt .
- يتم استضافة موقع HTTPS الثابت على Netlify ، والذي يتم سحبه من GitHub .
- تتم استضافة خادم WebSocket و WebRTC مع Linode .
- يقوم خادم WebSocket و WebRTC بتشغيل Node.js كبرنامج خادم.
- يقوم Node.js بتشغيل uWebSockets.js ، والذي بدوره يقوم بتشغيل uWebSockets (والذي ، نظرًا لكونه C ++ ، يكون أسرع بكثير من جافا سكريبت.)
- ثم يستخدم الخادم wrtc لتنفيذ WebRTC في Node.js. (نظرًا لأنه لا ينفذ ذلك. WebRTC ليس في الواقع JavaScript ، ولكنه مجرد واجهة برمجة تطبيقات JavaScript في WebIDL.)
- أستخدم خادم STUN العام المجاني من Google (stun.l.google.com:19302) لإجراء اتصال ICE.
- يعرض Chart.js المخطط الشريطي في أسفل النتائج.
- كل شيء في الأساس عبارة عن ترميز يدويًا بتنسيق HTML و CSS و JS و Bash. أنا أستخدم Moustache ( في JavaScript ) من جانب الخادم لقالب الصفحات بحيث يسهل ترجمتها (مع طرق العرض) وتغيير الأجزاء المشتركة (مع الأجزاء).
- أيضًا ، بالنسبة للترجمة ، استخدمت ترجمة Google إلى حد كبير (ولكن ليس بالكامل!). >.>
أيضًا ، كانت DeepL و Linguee مساعدة مذهلة أوصي بها تمامًا.