Передача данных от приложения или браузера к серверам и в обратном направлении может выполняться разными способами, но по определенным правилам. И записаны они в соответствующих протоколах: HTTP, FTP, POP3, SMTP, Telnet и пр. Одни подходят для случаев, когда к скорости обмена информацией не предъявляются жесткие требования: как пример, сайты информационного назначения. Другие же стоит использовать для случаев, когда оперативность передачи данных является ключевым критерием, как для интернета вещей.
Сейчас познакомимся более подробно с одним из таких протоколов – WebSocket Api. Преимущественно он используется при разработке приложений, содержимое которых обновляется в режиме реального времени и высокой частотой. Определим его преимущества и недостатки, особенности работы.
До недавнего времени протокол HTTP был одним из наиболее востребованных на рынке. Сегодня в чистом виде он уже почти не применяется. Протокол используется одновременно с надстройкой, позволяющей шифровать данные – HTTPS. Но он так и остался однонаправленным. То есть после завершения цикла «запрос-ответ» связь автоматически прекращается. Да и сам процесс передачи информации идет с определенными задержками. Это связано с тем, что на установление соединения требуется время. А еще в результате постоянно возникающих новых запросов возрастает нагрузка на сеть. Решить эти проблемы и призван ВебСокет.
WebSocket – это протокол, обеспечивающий обмен информацией между интернет-браузером и сервером через постоянное соединение. Применяется при реализации сценария взаимодействия «клиент-сервис». В случае безопасного соединения начинается как ws:// или wss://. Сам протокол – двунаправленный, полнодуплексный. То есть может работать как в прямом, так и в обратном направлении. Он будет поддерживать активное соединение между пользователем и сервером до тех пор, пока одна из сторон по собственной инициативе не разорвет его. Чисто передаваемых запросов в рамках одной сессии – неограниченное. А это значит, что скорость соединения выше, чем у HTTPS.
Чтобы установить соединение по этому протоколу, требуется отправить HTTP-запрос. Процесс взаимодействия выполняется в следующей последовательности:
У ВебСокета также есть надстройка, обеспечивающая шифровку передаваемых данных – WSS. Благодаря этому исключается вероятность несанкционированного доступа сторонних лиц к информации, загрузки вредоносных программ. При WSS информация кодируется еще у отправителя, а раскодируется получателем. Все это происходит в автоматическом режиме.
Как и другие подобные продукты, протокол WebSocket имеет свои преимущества и недостатки. Так, если говорить о его сильных сторонах, стоит выделить:
Но наряду с существенными преимуществами, у протокола ВебСокет есть и свои недостатки. И один из наиболее весомых – повышенные требования к серверному оборудованию. Не каждый узел сможет поддерживать этот протокол. Многие клиенты среди недостатков отмечают и отсутствие обратной реакции. То есть отправив запрос в WebSocket нельзя понять, доставлен ли он или нет. И если в течение 75 секунд не будет получен ответ, значит, запрос не был передан и попытку стоит повторить. Еще одна особенность работы протокола – необходимость отключать самостоятельно соединение, если пользователь меняет сеть, к которой было подключено его устройство или он находится в пути. Сервер не сможет подключить клиента, так как будет ожидать поступления запросов от него со старого адреса.
На практике особая польза ВебСокета оказалась в повышении скорости работы сайт. Но применять этот протокол не рекомендуется, если необходимо получать неизменные или старые данные. Не стоит к нему прибегать и тем, кому надо только единожды загрузить информацию. Для реализации таких задач вполне будет достаточно возможностей HTTP или HTTPS.
WebSocket сервер идеально подойдет для работы с:
В таком случае пользователю на своей стороне не придется выполнять никаких вычислений. Ему будет достаточно просто получать и/или отправлять информацию на сервер с высокой частотой, что обеспечивается легкостью протокола. Так, все обновления в онлайн-играх будут реализовываться мгновенно, параллельно с тем, как противник будет выполнять свои действия. Благодаря минимальной задержке трейдеры смогут повысить эффективность торгов и пр.
Чтобы понять, насколько полезными и удобными для решения многих задач могут быть Web сокеты надо знать, как работала вся эта система без них, то есть, что было «до».
Раньше, взаимодействие между браузером и сервером проходило по простой схеме: браузер отправлял запрос, а сервер давал на его ответ. То есть нет запроса – нет ответа. Сервер сам ничего не мог отправить. Как пример: пользователь получает сообщение или уведомление на сайте. Но он об этом не узнает до тех пор, пока браузер не отправить соответствующий запрос серверу. То есть делать все это надо было с определенной периодичностью. Только так можно было узнать, пришло ли какое-то сообщение или нет. Получается, что браузеру приходилось буквально каждые 5 секунд отправлять серверу запрос, чтобы получить информацию о новых уведомлениях в ответ. Но еще браузер мог узнать о наличии новых данных тогда, когда сам пользователь работал с сайтом: обновлял вкладки, переходил между страницами, повторно заходил на него и пр.
Как первый, так и второй вариант имели свои недостатки:
Этот протокол передачи данных позволяет серверу самому отправлять браузеру новую информацию, не ожидая запроса от него. Такая высокая интерактивность решает все проблемы, присущая HTTP.
Еще одно преимущество WebSocket – возможность структурировать сообщения, которые передаются. Протокол работает на стеке TCP/IP, использует метод «прямого рукопожатия». То есть объект отправляет предварительный запрос, в котором определяется использование веб-сокетов. Дальнейшая работа будет вестись уже в рамках этого соединения.
Остались вопросы о протоколе WebSocket? Нужна более детальная информация или настройка его работы? Обращайтесь за профессиональной помощью к специалистам компании «Xelent».