Fix broken PriceFeed

This commit is contained in:
Aleksandr Kraiz
2023-02-15 13:52:04 +04:00
parent b9525c014a
commit e8c242c357
3 changed files with 37 additions and 6 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@orionprotocol/sdk",
"version": "0.17.9",
"version": "0.17.10",
"description": "Orion Protocol SDK",
"main": "./lib/esm/index.js",
"module": "./lib/esm/index.js",

View File

@@ -0,0 +1,23 @@
import Orion from '../Orion';
describe('Price Feed', () => {
test('Ticker', async () => {
const { unitsArray } = new Orion('testing');
for (const unit of unitsArray) {
const ticker = 'ORN-USDT';
await new Promise((resolve, reject) => {
const timeout = setTimeout(() => {
reject(new Error('Timeout'));
}, 10000);
const { unsubscribe } = unit.priceFeed.ws.subscribe('ticker', {
payload: ticker,
callback: () => {
clearTimeout(timeout);
unsubscribe()
resolve(true);
}
});
});
}
});
});

View File

@@ -109,11 +109,19 @@ export default class PriceFeedSubscription<T extends SubscriptionType = Subscrip
this.ws.onmessage = (e) => {
const { data } = e;
// const isBufferArray = Array.isArray(data);
// const isArrayBuffer = data instanceof ArrayBuffer;
const isBuffer = Buffer.isBuffer(data);
if (!isBuffer) throw new Error('Not a buffer');
const dataString = data.toString();
// Convert data to string
let dataString: string;
if (typeof data === 'string') {
dataString = data;
} else if (Buffer.isBuffer(data)) {
dataString = data.toString();
} else if (Array.isArray(data)) {
dataString = Buffer.concat(data).toString();
} else { // ArrayBuffer
dataString = Buffer.from(data).toString();
}
if (dataString === 'pong') return;
const json: unknown = JSON.parse(dataString);
const subscription = subscriptions[type];