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

Phoenix — веб-фреймворк, написанный на функциональном языке программирования Elixir.
Использование фреймворка Phoenix наиболее целесообразно для проектов с высокой нагрузкой и для проектов, активно использующих веб-сокеты: например, системы для совместной работы, месседжеры, дашборды в реальном времени с высокой частотой обновлений информации.
Go или GoLang — компилируемый многопоточный язык программирования.
Язык был разработан Google для решения проблем корпорации, возникающих при разработке программного обеспечения. Хорошо подходит для проектов, где требуется максимально высокая скорость отклика или где ожидается очень высокая нагрузка.
JavaScript (JS) — язык программирования, который наиболее широко JS используется в браузерах как язык сценариев для придания интерактивности веб-страницам.
Также JS может использоваться для бэкенд-разработки, для разработки мобильных приложений и для других задач. В языке отсутствуют стандартная библиотека, стандартные интерфейсы к веб-серверам и базам данных, а также нет встроенной системы управления пакетами. Но всё это решается подключением сторонних библиотек и использованием дополнительного ПО.