Создаем на Github репозиторий cwp-24, клонируем его, открываем в IDE
Реализуем базовый 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 и более одновременно открытых вкладках