Тестовое задание для JS-разработчиков.
https://bagart.github.io/test_exchange_monitor/
Нужно разработать простую таблицу котировок для криптовалютной биржи Bitcoin.com используя eё публичный API. В таблице должны отображаться и обновляться в реальном времени следующие данные для каждой пары валют:
- Название или ID - Ticker
- цена покупки - Bid
- цена продажи Ask
- наибольшая цена за день - High
- наименьшая цена за день - Low
- последняя цена - Last
Демонстрацию работы такой таблицы котировок можете посмотреть здесь: fintechytech.github.io/quote/, но используйте эту демонстрацию лишь как пример и ориентир, но не как точное задание для выполнения, конкретные задачи по функциям таблицы немного отличаются от этой простой демонстрации.
- Реализовать таблицу котировок отображающую и обновляющую данные по каждой паре валют.
- Добавить возможность сортировки по возрастанию и убыванию по каждому столбцу при клике на него (см. демонстрацию)
- Добавьте переключатель ограничивающий список пар таблицы только 50-ю самыми дорогими по их последней цене (last) при этом оставьте возможность сортировки по другим столбцам. Другими словами, в каждый момент времени в таблице должны показываться только топ 50 самых дорогих пар отсортированых в соответсвии с выбранным столбцом. Проверьте правильность выполнения этого задания например выводя не 50 а 5 пар, при сортировке по столбцам должен менятсья только порядок пар, но не набор, тоесть это должны всегда быть самые дорогие по last пары.
Рекомендуется использовать публичный WebSocket API биржи Bitcoin.com, этот API работает по JSON-RPC 2.
Для разработки вам потребуется метод GetSymbols с помощью которого можно получить список пар торгующихся на бирже. Также вас интересуeт метод subscribeTicker и соответствующие сообщения-нотификации в которых уже будут присылаться и обновляться все необходимые данные. Подробнее о протоколе и форматах сообщений написано в документации по ссылкам выше.
Примерный алгоритм взаимодействия с API таков:
- Получить список пар методом
GetSymbols
- Для всех пар подписаться на их котировки методом
subscribeTicker
После этого в соединении начнут приходить сообщения ticker
в которых будут все данные для таблицы, а именно:
symbol
- id пары к которой относятся данные, и одновременно имя которое стоит выводить в таблицеbid
- цена покупки Bidask
- цена покупки Askhigh
- наибольщная цена за день Highlow
- наименьшая цена за день Highlast
- последняя цена Last
Поле symbol
в ответе GetSymbols
и в сообщении ticker
является первичным ключом, оно не будет меняться, и по нему всегда однозначно идентифицируется пара.