Технология
Итак, на базовом уровне, когда вы подключаетесь, он загружает веб-страницу через 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 ++, намного быстрее, чем когда-либо мог быть JavaScript.)
- Затем сервер использует wrtc для реализации WebRTC в Node.js. (Поскольку он не реализует это. WebRTC на самом деле не JavaScript, а просто API-интерфейс JavaScript в WebIDL.)
- Я использую бесплатный общедоступный сервер STUN от Google (stun.l.google.com:19302), чтобы установить ICE-соединение.
- Chart.js отображает гистограмму внизу результатов.
- Все это в основном просто кодированный вручную HTML, CSS, JS и Bash. Я использую Mustache (в JavaScript) на стороне сервера, чтобы шаблонировать страницы, чтобы их было легче переводить (с представлениями) и изменять общие части (с частями).
- Также для перевода я в основном (но не полностью!) Использовал Google Translate. >.>
Кроме того, DeepL и Linguee были великолепными помощниками, которые я полностью рекомендую.