Websockets
WebSocket — протокол связи, предназначенный для обмена сообщениями между браузером и сервером через постоянное соединение в режиме реального времени.
Данные по веб‑сокетам передаются в обоих направлениях в виде «пакетов», причём это происходит без разрыва соединения и дополнительных HTTP‑запросов. По веб‑сокетам можно передавать как текстовые, так и бинарные данные. Протокол имеет хорошую поддержку современными браузерами и работает без ограничений, связанных с кросс‑доменными запросами.
Веб‑сокеты делают возможным более тесное взаимодействие между браузером и веб‑приложением, что позволяет более эффективно работать с интерактивным содержанием и создавать приложения реального времени.
В части бэкенд‑разработки почти все современные фреймворки поддерживают работу с веб‑сокетами, однако для реализации приложений с достаточно высокой нагрузкой интерпретируемые языки (PHP, Ruby, Python) не очень подходят, так как им не хватает производительности для работы с большим количеством клиентских соединений.
Мы разрабатывали решения на Elixir / Erlang (фреймворк Phoenix) и на языке программирования Go (библиотека Gorilla WebSocket), так как реализация взаимодействия по веб‑сокетам на этих языках уверенно выдерживает огромное количество соединений даже на одном сервере.