Untitled
unknown
plain_text
3 years ago
1.2 kB
6
Indexable
const Binance = require('binance-api-node').default;
const Redis = require('redis');
const binanceClient = Binance();
const redisClient = Redis.createClient();
const symbols = ['ETH', 'BTC'];
// Define an object to store the latest prices for each symbol
const latestPrices = {};
// Define an asynchronous function to handle the ticker updates
async function handleTickerUpdate(symbol, price) {
return new Promise((resolve, reject) => {
redisClient.set(symbol, price, (error, result) => {
if (error) {
reject(error);
} else {
latestPrices[symbol] = price; // Update the latest price for the symbol
resolve(result);
}
});
});
}
// Subscribe to the real-time price feed for each symbol
symbols.forEach(symbol => {
binanceClient.ws.ticker(symbol + 'USDT', async ticker => {
const timestamp = new Date(ticker.eventTime).getTime();
const price = parseFloat(ticker.bestBid);
if (!latestPrices[symbol] || timestamp > latestPrices[symbol].timestamp) {
try {
await handleTickerUpdate(symbol, price);
} catch (error) {
console.error(`Error updating ${symbol} price in Redis: ${error}`);
}
}
});
});
Editor is loading...