Первая реализация себя в WEB или попытка сделать систему дистанционного обучения, часть I

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Предыстория

Итак, хотелось бы начать свой рассказ с опыта, полученного во время обучения в дистанционном формате. Мы практически не получали знаний, многие уроки не проводились(хотя мы были этому рады). Мне было обидно за то, что дистанционное обучение внедрили как-то слишком быстро, а не постепенно. И именно поэтому не всем учителям эта идея понравилась, но куда им деваться. 

Cамо обучение проходило в дискорде. Конечно, почти все дети имели представление что это такое. Но учителя нет. Большой объем труда лег на плечи нашего учителя информатики, в целях приобщения учительского состава к новой для них программе. Но он справился не со всем, и поэтому некоторые учителя просто сбрасывали нам дз(домашки было много, но зато мы в некоторые дни могли хорошо выспаться). Не все учителя не проводили занятия. Были те, кто освоился в программе и проводил занятия.

Именно в то время я стал задумываться над тем, почему еще не было создано приложение, где будет сочетаться все: и видеочат, и расписание уроков, и чат с преподавателем, короче все те максимально удобные вещи, которые бы упростили бы работу на дистанте.

Зарождение и развитие идеи

Загоревшись этой идеей я начал сканировать весь интернет. Моей главной задачей была реализация видеочата, а оболочку приложения создать будет нетрудно. В результате сканирования я понял, что люди используют несколько технологий:  webRTC и уже готовые видеосервера, где надо будет только к ним подключаться и настраивать connect. Так как последнее мне показалось более скучным, то я решил прочитать про технологию webRTC

О стандарте webRTC

Для реализации видеочата я использовал стандарт webRTC (web real time communications). WebRTC - проект с открытым исходным кодом, предназначенный для организации передачи потоковых данных между браузерами или другими поддерживающими его приложениями по технологии точка-точка. Его также называют P2P (peer too peer) соединением. В стандарте WebRTC описано, что мы можем реализовать его сами на удобных нам технологиях: rest api, websocket и другое. Для своего видеочата я использовал технологию websocket. 

Для того чтобы установить прямое соединение между клиентами необходимо знать их IP-адреса. Но у нас они есть не всегда, так как не все клиенты обладают публичным статическим IP-адресом.

Большинство устройств, которые выходят в интернет, находятся за NAT (Network Address Translation – транслирует внутренние локальные IP-адреса во внешние глобальные IP-адреса). То есть устройства подключаются к роутерам, который обладает статическим публичным адресом, и он транслирует наш локальный внутренний адрес устройства во внешний публичный адрес. Нам необходимо узнать с нашего клиента наш публичный адрес. Для этого есть специальная технология STUN (Simple Traversal of UDP through NAT) – сетевой протокол, который позволяет клиенту узнать свой публичный адрес. STUN серверы есть у кампании Google, а также есть другие бесплатные серверы.

После того как мы узнаем IP-адрес, порт и другие метаданные о клиенте, мы захватываем медиаконтент, то есть видео и аудио, и отправляем эти данные через сервер сигнализации на другой клиент. Отправляем мы “Offer”, который захватывает с собой тот самый медиаконтент, и ICE candidate, который в себе несет метаданные о клиенте. После получения этих данных второй клиент проделывает те же самые операции, только вместо “Offer”, отправляет “Answer”, где также хранятся данные медиаконтента. Бывают случаи, когда WebRTC соединение установить невозможно, к примеру при использовании мобильного интернета. Тогда в дело вступает еще одна технология – TURN-сервер (Traversal Using Relay NAT – позволяет получать данные через TCP или UDP соединения). Он используется в крайнем случае как посредник, превращая P2P соединение в клиент-серверную связь. При использовании такого сервера качество картинки хуже, и в целом все медленнее работает.

Заключение

В данной статье была лишь теория. Я понимаю что это скучно, но надо знать с чем ты работаешь. В следующей статье я уже буду описывать создание самого видеочата. Пишите в комментарии ваши пожелания, мои недочеты, пишите критику, буду очень рад. Встретимся в следующей статье!

Источник: https://habr.com/ru/post/652907/


Интересные статьи

Интересные статьи

Всем привет, я Кирилл, СТО Adapty. Я делал систему серверной валидации для наших SDK. Серверная валидация позволяет проверить подлинность покупки: устройство обращается к серверам Google за информацие...
МойОфис продолжает серию статей о корпоративной почтовой системе Mailion (1, 2), разрабатываемой при грантовой поддержке РФРИТ, и входящем в его состав объектном хранилище DOS. Мы уже рассказали об ос...
Нам приходилось слышать абсолютно разные оценки скорости (ну или наоборот — оценки потребности в железе) систем распознавания речи, отличающиеся даже на порядок. Особенно радует, когда ...
Случилось так, что по наследству мне досталась целая коробка семисегментных индикаторов с гордой надписью «Комплект часы». Давно хотелось пустить её содержимое в дело, а когда дошли руки — оказ...
Привет, Хабр! Я живу рядом с Байкалом, и много раз бывал на нем. Это красивое озеро с чистым воздухом. Несколько лет назад озеро начало загрязняться. И вот я подумал почему бы не сделать дрон...