const routes = [
['A', 'B'], ['O', 'P'], // [начало], [конец]
['E', 'F'],
['J', 'K'],
['F', 'G'],
['K', 'L'],
['N', 'O'],
['M', 'N'],
['L', 'M'],
['G', 'H'],
['B', 'C'],
['H', 'I'],
['M', 'N'],
['C', 'D'],
['D', 'E'],
['I', 'J']
]
// const db = new DB(...)
const rates = new Map()
let socket = null
const connect = () => {
socket = new WebSocket('wss://stream.binance.com:9443/stream?streams=1000satstry@bookTicker/acatry@bookTicker/acetry@bookTicker')
socket.onopen = async () => {
// await db.connect(...) или db.open() и т.п.
}
socket.onmessage = async ({ data: message }) => {
const { data } = JSON.parse(message)
delete data.u // Если логика Object.is
if(!Object.is(rates.get(data.s), data)){
rates.set(data.s, data)
// await db.query(...)
console.log('Changed: ', data.s)
} else {
console.log('Not changed: ', data.s)
}
}
socket.onerror = e => console.error(e)
socket.onclose = async () => {
/* await db.close() или db.end() и т.п. */
console.log('reconnect')
socket = connect()
}
return socket
}
socket = connect()
setInterval(() => socket.close(), 5000) // test
const ws = new WebSocket('wss://stream.binance.com:9443/ws/xrpusdt@bookTicker')
const data = {
XRPUSDT: await new Promise(resolve => {
ws.onmessage = e => {
const message = JSON.parse(e.data)
if(resolve) resolve(message)
else if(message.s === 'XRPUSDT') data.XRPUSDT = message
}
})
}
console.log(data)
И ещё что я не понял - это то, зачем менять руками входные данные.