Step 2 (S-44897)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/14835/step/2

Step 2 (S-44897) 1.png

[00:00 - 00:17] мы переходим к следующей теме которая в общем то же относится к более современном а вот приложение это реал тайм сообщение а в современных приложениях в 1 очередь в публичных которая ориентированная на широкую аудиторию в социальных сетях а


[00:17 - 00:34] во многих других сервисах а зачастую возникает необходимость доставить а пользователю некоторую информацию в то время как он находится на странице то есть а сообщить что то пользователя как можно скорее а


[00:34 - 00:53] таких сейчас понятие термин реалтайме сообщение в режиме реального времени а на самом деле термин реалтайм он здесь не относится никоим образом к операционным системам то есть никаких гарантий по времени доставки а конечно веб приложениях нету а


[00:53 - 01:11] подразумевается что речь идет про технологию которая позволяет доставлять сообщение пользователю а так быстро насколько это возможно то есть практически в момент его возникновения а пример использования то есть где эта тема вообще актуален


Step 2 (S-44897) 2.png

[01:11 - 01:31] 1 и самый естественный пример это разного рода чаты и система обмена сообщениями то есть мессенджер а мысль вообще начались классических клиентских приложений вроде бы вроде отсеки по скайпу а но постепенно у всех


[01:31 - 01:46] а систему у всех мы слышим голос систем а возникли веб интерфейса то есть а вот приложение также должно являться клиентам а к системе обмена сообщениями а


[01:46 - 02:03] здесь требования реал тайм оно вполне понятно то есть все хотят получить сообщение как только вы его отправили а отображение разного рода котировок слежение за графиками с какими то показателями


[02:03 - 02:20] для большого количества пользователей если люди следят за кем то числа ним желательно узнавать о изменениях этих чисел а также в реальном времени а разные разного рода прямые трансляции текстовые э либо другие виды трансляций


[02:20 - 02:38] то есть примерно так как это сделано в твиттере вы можете следить за каким то событием например за матчем и вас а по мере возникновения этих ситуаций в игре будут без давления веб страничке вы будете сразу получать


[02:38 - 02:53] уведомление разного рода уведомления об в общем уж вы давление в некоторых случаях по приложению просто нужно уведомить пользователя


[02:53 - 03:08] а какой то информации то есть внутренние сообщения специфичный код конкретного приложения от им бывает иногда требования что нужно это сделать можно быстрее и а в конце концов сетевой обмен


[03:08 - 03:24] выборах большинство клиентских играх сейчас конечно пишет с использованием flash технологии и там используется обычный ну обычные сокеты но в принципе


[03:24 - 03:41] современные браузеры позволяют писать игры с использованием и javascript и для таких игр которые написаны а наш с моей javascript а требуется организовать обмен данными с сервером причем если эта игра не пошаговая то


[03:41 - 03:57] должен происходить в реальном времени а вот пример когда могут понадобиться может понадобиться доставка сообщений пользователя в реальном времени а теперь


[03:57 - 04:16] давайте посмотрим как это выглядит просто чтобы понимать а у нас есть наше приложение нашем случае приложение оно размещено на некоторых серверах а здесь мы разделились


Step 2 (S-44897) 3.png

[04:16 - 04:31] приложение на 2 сервера по факту это 2 роли этом они могут находиться на 1 машине это не столь важно аппликейшен сервер выполняет основную бизнес логику вашего приложения и появляется еще 1 дополнительный сервер


[04:31 - 04:51] которая занимается доставкой сообщений а в чем вообще проблем зачем зачем мужу почему не обойтись обычным и плетешь сервера мы решаем проблему как все остальные в разработке а дело в том что протокол http он подразумевает


[04:51 - 05:08] работу по принципу запрос ответ то есть пока клиент не осуществить запрос серверу он не узнает какой то результат соответственно а вот это ключевая проблема которой мы сегодня решить


[05:08 - 05:24] в случае доставки сообщений обычно выделяют следующие роли существует какой то инициатор то есть а и бы клиент я бы какой то фоновый активность а которая


[05:24 - 05:42] инициирует создает первоначальная события например отправляет сообщения а как правило это сводится к некоторому вызвал на сервере то есть делается вызов например сервер проверяет всю необходимую логику там доступ записывает


[05:42 - 06:00] сообщение в базу данных чтобы не потерялось после чего необходимо доставить сообщение конкретным пользователем а для того чтоб сообщение было доставлено можно быстрее пользователей а пользователи должны его ожидать


[06:00 - 06:16] то есть если пользователь пользователь не ожидает от классического положения общем ничего не ожидает кроме реакции смол пользователя то сообщение не придет в реалтайме а что значит ожидать это значит что должно быть некоторое постоянные соединения или


[06:16 - 06:34] что то похожее от сервера а ко всем нашим потенциальным получатель и в момент возникновения этого сообщение оно через суд уже установленной сетевое соединение будет передана клиенту


[06:34 - 06:52] вот такую систему мы хотим сделать а какие есть варианты решения то есть что можно сделать начнем а с на самом деле не решения рассмотрим а как можно


Step 2 (S-44897) 4.png

[06:52 - 07:08] проблему 1 вариант решения это так называемый полинг это периодически опросе это означает что клиент который хочет получить сообщение в данном случае вот 1 из этих 2


Step 2 (S-44897) 5.png

[07:08 - 07:22] делать запросы на сервер периодически то есть грубо говоря каждые 5 секунд спрашивает а не пришло новое сообщение не пришло много сообщений так до бесконечности а 2 вариант


Step 2 (S-44897) 6.png

[07:22 - 07:40] называемая технология коммент а эта модификация 1 варианта но а с долго живущими запросами а в этом случае а клиент будет получать сообщения в тот момент когда а они действительно мы пришли


[07:40 - 07:58] а не тогда когда он за ними обратился server push эта модификация модификация варианта лонг поллинг модификации вариант комета а она отличается механизмом хотим мы этого или зона в браузере


[07:58 - 08:15] и наконец протокола это отдельный протокол про которую мы поговорим сегодня а он предоставляет возможность открыть а полноценная полнодуплексный соединения из java скрипта и соответственно получать


[08:15 - 08:19] а отправлять по нему данные так же как по обычному соединениях