Closed polkila closed 3 years ago
а какую проблему решает?
Для информативных целей. Может, кому-то нужно будет подключить несколько сотен каналов, и в добавок к этому в середине очереди мистическим образом разорвётся соединение с сокетом.
Для конечного пользователя как будет api выглядеть тогда?
Должен понравиться такой вариант:
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')} });
Хм, пока все еще не понял юзкейс. По сути этот метод будет дублировать orderbook?
Закрываю, если все еще есть потребность -- можно открыть.
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();});