Большинство коннекторов в OsEngine так или иначе используют данную технологию. Особенно это касается бирж криптовалют. Потоковые данные идут именно через данный протокол.
Библиотек для подключения данного протокола великое множество. В этой статье поговорим о библиотеке, которую надо использовать и на что обратить внимание.
Работающая библиотека.
WebSocket4Net.
Данная библиотека и реализация вёбсокетов хорошо себя показывают в работе. Её и нужно использовать.
Обязательная подписка на ошибки и disconnect.
Мы подписываемся на ошибки и на сообщение разрыва сокета. Из сообщения о разрыве выбрасываем DisconnectEvent, метод Dispose для коннектора не трогаем!
Подписка на события открытия и закрытия сокетов в BitgetSpot сервере:

В сервере АЛОР обработка закрытия сокета выглядит так:

И это то, что нужно.
- Сообщения о разрыве сокета.
- Если статус сервера ещё не Disconnect, меняем его статус и выбрасываем на верх событие разрыва соединения.
На старте ждём все сокеты.
Пока все сокеты не перевелись в состояние Open, мы событие ConnectionEvent выслать на верх не можем, а также не можем менять статус у сервера на Connect.
Иногда вёбсокеты в разных Api имеют различные адреса. Например, в OKX их четыре. И прежде чем переводить статус сервера в Connect, нам необходимо дождаться, пока они все активируются и перейдут в статус Connect.
Для этого в OKX сделан специальный метод, который вызывается после того, как каждый отдельный сокет переходит в статус Connect:

Тоже самое касается коннектора к АЛОР, в котором ДВА сокета. Торговый и для данных отдельно.

- Происходит событие открытия сокета для чтения данных по портфелю.
- Происходит событие открытия сокета данных.
- Только после первых двух пунктов происходит перевод состояния коннектора в Connect.
Не разбираем сообщения потоком сокета!!!
Когда приходят какие-то данные, нужно их складывать в конкурентный массив. Уже потом из этого массива другой поток, который только этим и занимается, должен данные конвертировать.

Разбор данных в другом потоке, в другом методе:

Удачных алгоритмов!
Пост из серии «Коннекторы к OsEngine»
Серия о том, как стать настоящим программистом и изменить свою профессию.
Оглавление и смыслы здесь: https://smart-lab.ru/company/os_engine/blog/959953.php
Комментарии открыты для друзей, добавляйтесь!
OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка OsEngine: https://t.me/osengine_official_support
Курилка, общаемся здесь: https://t.me/o_s_a_chat
Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Подробнее https://smart-lab.ru/compan...


