Веб-разработка. Разработка с нуля. Реализовать (многопоточный) HTTP клиент + (websocket) сервер. Алгоритм: На сервере хранится список ключевых слов, которым соответствует несколько URL. Клиент посылает ключевое слово на сервер. Сервер передаёт клиенту список URL. Клиент выбирает один URL из списка и через сервер в многопоточном режиме скачивает контент. Клиент сохраняет контент в LocalStorage с возможностью чтения оффлайн. Сервер должен: Хранить соответствие ключевых слов с URLами. При скачивании контента передавать статус загрузки: размер, кол-во запущенных потоков, прогресс загрузки. Кол-во потоков и скорость на поток должно быть ограничено посредством конфига. Клиент должен: Иметь поле для ввода ключевого слова. Иметь возможность показа списка URL с возможностью выбора пользователем нужного. Показывать статус загрузки: размер, кол-во запущенных потоков, прогресс загрузки. Иметь возможность показа списка загруженного контента с возможностью выбора пользователем нужного. Показать выбранный загруженный контент. Не забудьте отследить все возможные ошибки, обработав их и представив пользователю в удобном виде. Требования: JavaScript/Node.js напиши пошаговую инструкцию как их запускать и проверить.