-
Notifications
You must be signed in to change notification settings - Fork 134
WebSocket proxy (json_proto) проблемы #440
Comments
эти ограничение вызваны текущей реализацией прокси - тк контракты транслируются с grpc protobuf |
Да мне все равно, чем вызваны ограничения
и похожи ли они на проблему. Я уже давно понял, что разработчикам API Tinkoff Инвестиций не присуще чувство прекрасного, и, как закономерный финал, не приходится говорить ни о каком "бесшовном" переходе на использование WebSocket Proxy в своем коде. |
напишите пожалуйста какую проблему вы решаете и об каком "бесшовном" переходе речь? |
Попробуйте себе представить проект в десяток тысяч строк кода, использующий определенную структуру данных, получаемых с gRPC-стримов InvestAPI. Вдруг появляется интересная альтернатива в виде WebSocket-стримов, поставляющих те же самые данные, но уже в виде структур иной формации. Внимание, вопрос: в каком случае придется минимально переписывать код - в случае с идентичными или в случае с малопохожими друг на друга структурами? Время пошло.... А теперь серьезно: если вот эта шняга, за которую здесь жуется уже вторую неделю, тебе не по силам, то есть смысл задуматься о смене работы. Тебе вполне бы подошел оранжевый жилет и лопата в руках при укладке асфальта. |
Друг - твоя токсичность не помогает в решении проблемы И еще друг не все вокруг шняга, если ты такой умный приходи на собеседования если знаешь другие слова кроме шняга, если пройдешь собес я сразу за лопату и копать |
Там работы от силы на 10 минут, о чем речь вообще? |
да я согласен что 10 минут, только понять бы что требуется и точно ли проблема у меня |
На payload я уже не настаиваю, но ради совместимости можно было бы и пожертвовать лишними байтами - ни вижу здесь никакого криминала. Главная проблема в том, что поля в возвращаемых структурах gRPC и WebSocket-стримов, хоть и имеют одинаковые наименования, но к сожалению, разных типов. Если честно, то я давно и без проблем нормализовал для себя (привел в соответствие) структуру данных, возвращаемых WebSocket MarketData стримом. Positions и Portfolio не стал пока трогать, в надежде на то, что разработчики смогут доставлять данные "один в один" как в gRPC. |
1 в 1 не получается тк gRPC это бинарный протокол и передача там таймастампа обусловлена размером полей целых чисел. {"seconds":1690996195,"nano":0} |
|
Любой из этих двух лучший, если используется только он один в gRPC и WebSocket. Какой смысл был мутить WebSocket json_proto стрим, если он не стал идентичным gRPC по структуре возвращаемых данных?
именно так я и сделал) Но мог бы с таким же успехом пересобрать и сообщения WebSoсket-стрима в первоначально предложенном разработчиком варианте. Мне не трудно. Гораздо труднее объяснить, чем шедевр мастера отличается от колхоза тяп-ляпщика. |
Ну тут спора не получится, что выглядит не красиво, json-proto вроде по твоей просьбе и делали и только ты его и пользуешь. |
Там где вы все учились, я преподавал. Какой собес ты мне предлагаешь?) Я сам подобных бедолаг постоянно отбираю, но молодежь сейчас далеко не та, что в мои времена... |
Тут понятно что у вас серьезный случай |
не удивлюсь, если я вообще единственный WebSocket proxy затестил на данный момент. Но если сделать все по уму, то мои последователи не раз поблагодарят разработчиков от души
там еще одна проблема, кроме TS И самое главное: если это только для меня, то можно не делать - сегодня же закрою issue. А вот если есть хоть немного понимания, что необходимо обеспечить единство форматов данных WebSocket и gRPC-стримов для легкого старта работы с WebSocket proxy, то конечно же жду в скором будущем обновления. |
с последним обновлением возможно что и эта проблема пройдет, но еще возможно что всплывут и другие неожиданности |
можете проверять еще раз |
Да конечно и это недоразумение запилим |
в итоге получается помоему очень убого, но мне к сожалению мне не понять мысли мастера сельпо пту для бедолаг |
убогость заключается в том что теперь в json будует все поля с дефолтными значениями -если они не указаны - по словам мастера это в grpc значения содержатся, хотя видимо мастер гуманитарных направлений не разбирает протоколы и в чем отличия json от protobuf |
Не расстраивайся сильно. я сделаю из тебя джуна, как минимум. Мастер пока отталкивается от того, что ему отдает SDK для Node JS. Убедишь Мастера, что там что-то не так, и что другие SDK возвращают без nano, можно будет обсудить. А пока делай, за что тебе деньги платят, пока я в хорошем настроении. |
Друг, так и хочется тебе сказать иди делай уроки, а свои фантазии оставь для других пабликов - писателей-фантастов |
Ученик, ты уж определись, можешь ли ты сделать полное подобие структуры gGPRC или нет? Если нет, то не имеет смысла мучать себя и других: json_proto можешь убить за ненадобностью тогда. А если можешь - стисни зубы и делай. |
да я сделал уже только доедет оно после торгов |
Так то лучше, ставлю тебе плюсик пока |
и скорей всего json_proto просто удалим потом - либо придется обратно убрать дефолтные значение - потомучто смысла в них нет, поразвлекаемся с гуманитариями над совместимостью и пока |
очень жаль, что ты так и не понял, в чем смысл реализации json_proto( А то что она будет с небольшими костылями на бэкенде, отобьется много раз сэкономленным временем на фронтах пользователей. Все ради удобства конечного пользователя, не более того |
да просветите плиз, в чем заключается удобство? |
Не переживай так - тебе все скажут. Когда придет время |
Доброе утро, ученик! Много лучше, но не слушаешь ты Мастера внимательно, он тебе все подсказал уже. Холостой деплой получился. Ход твоих мыслей мне предельно понятен, но, как говорится, почувствуй разницу: |
Проблема только с этим осталась? |
Мастер пока проверил, что смог. Остальное, если вылезет, то только после очередного деплоя. А если уж совсем откровенно, то Мастер не работает тестировщиком в InvestAPI Тинькова, и все что он делает на данный момент, он делает с одной целью - сделать InvestAPI лучше, по мере имеющихся у него возможностей. Кстати, если одолеешь этот Issue, то обязательно свяжусь с руководством Банка, чтобы тебя перебросили на эту тему. Там-то у тебя будет что рассказать мастеру-гуманитарию из ПТУ, и при его контроле, я уверен, этот тикет будет быстро закрыт раз и навсегда. |
обновил |
Теперь candle и orderbook прилетают нормальные - ни в какой доп. обработке больше не нуждаются - достаточно переключиться на желаемый способ доставки сообщений и все. |
используйте меня для этого как угодно
да простите за мое недоверие, считайте что это проблема в процессе донесения требований |
На постмаркете выстрелила одна мелочь: WebSocket-стрим доставляет orderbook без ключей bids или asks, в случае отсутствия соответствующих данных, а gRPC и REST-стаканы всегда с ними обоими |
аналогичная картина в данных WebSocket Positions Stream: отсутствуют ключи futures,options,securities в случае отсутствия соответствующих данных. |
Время в orderbook.time возвращается в строковом формате вместо timestamp, аналогичные проблемы в candle с time и last_trade_ts.
Также дает знать о себе старая проблема. Можно конечно же откостылить у себя, но если задаться целью получать не только "сообщения c наименованиями полей идентичными наименованиям полей из proto-контрактов", но и одинакового типа, то есть над чем поработать.
Скорее всего аналогичные проблемы в других WebSocket стримах - не проверял.
Совсем мелочь - пока никто не начал пользоваться WS Proxy, имеет смысл добавить payload в сообщения - для полной совместимости структуры возвращаемых данных с данными gRPC стримов.
The text was updated successfully, but these errors were encountered: