Tinkoff / invest-openapi-js-sdk

Apache License 2.0
211 stars 50 forks source link

Callback для message #100

Closed polkila closed 3 years ago

polkila commented 4 years ago

https://github.com/TinkoffCreditSystems/invest-openapi-js-sdk/blob/7e60e1a7843d8b7c68573b47ed2c7a7baef911f3/src/Streaming.ts#L164

Неплохо было бы, наверное, иметь возможность добавлять индивидуальный callback для каждой команды. Что-то вроде: private enqueue(command: object, callback: Function) { this._wsQueue.push({command, callback}); this.dispatchWsQueue(); } https://github.com/TinkoffCreditSystems/invest-openapi-js-sdk/blob/7e60e1a7843d8b7c68573b47ed2c7a7baef911f3/src/Streaming.ts#L175

И вызывать: const item = this._wsQueue.shift(); this._ws.send(JSON.stringify(item.command), () => {item.callback(); cb();});

ZigGreen commented 4 years ago

а какую проблему решает?

polkila commented 4 years ago

Для информативных целей. Может, кому-то нужно будет подключить несколько сотен каналов, и в добавок к этому в середине очереди мистическим образом разорвётся соединение с сокетом.

ZigGreen commented 4 years ago

Для конечного пользователя как будет api выглядеть тогда?

polkila commented 4 years ago

Должен понравиться такой вариант: api.batchSubscribe({type, figis, depth, onData, onSubscibe }); api.batchSubscribe({type:'orderbook', figis:['BBG000B9XRY4','BBG000BBQCY0','BBG000MM2P62'], depth:20, onData:function(data){console.log(data.figi, data.orderbook)}, onSubscibe:function(type,figis){console.log('Success')} });

ZigGreen commented 3 years ago

Хм, пока все еще не понял юзкейс. По сути этот метод будет дублировать orderbook?

ZigGreen commented 3 years ago

Закрываю, если все еще есть потребность -- можно открыть.