Веб-сокеты
ЛР24
Создаем на Github репозиторий cwp-24, клонируем его, открываем в IDE
Установим express, socket.io и axios
Реализуем базовый express-сервер раздающий статику из директории public
Научим наш сервер отправлять простые сообщения на клиент с помощью веб-сокетов
...

const app = express();

const server = http.createServer(app);
const io = socketio(server);

io.on('connection', socket => {
  let i = 1;

  setInterval(() => socket.emit('tick', i++), 1000);
});

...
Подключимся к нашему серверу из public/index.html
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.4/socket.io.js">
</script>

<script type="text/javascript">
  const socket = io.connect('/');

  socket.on('tick', count => console.log(count));
</script>
С помощью axios напишем воркер, который будет раз в секунду получать данные от https://blockchain.info/en/ticker. Будем осторожны - ставим новый таймаут только после получения данных.
Допишем наше приложение:
1. После подключения сервер ожидает от клиента код валюты и периодичность получения курсов
2. После получения сервером этой информации, он должен отправлять клиенту данные по этой валюте событием btc с заданной переодичностью
3. Клиент должен иметь возможность с HTML-страницы просматривать обновляющиеся курсы
4. Клиент должен иметь возможность с HTML-страницы изменять значения кода валюты и периодичности без перезагрузки страницы
5. После подключения клиент присоединяется к комнатам - buy, sell
6. Клиент должен иметь возможность с HTML-страницы посылать сообщения в комнаты
7. Клиент должен получать информацию о новых сообщениях в комнатах
8. Все функции должны корректно работать на 2 и более одновременно открытых вкладках
Покажите историю коммитов своего репозитория на Github
Расскажите про механизм веб-воркеров
Покажите работу приложения
Веб-сокеты
Документация по socket.io