Я пытаюсь избавиться от двойных кавычек вокруг символов торговой пары, которые я получаю из веб-сокета Binance. Он отправляет в режиме реального времени лучшие цены спроса и предложения для всех торговых пар на платформе. Это означает, что он очень часто получает много полезной нагрузки. Это веб-сокет:
const WebSocket = require('ws');
ws = new WebSocket('wss://stream.binance.com:9443/ws/!bookTicker');
Насколько я знаю, этот фрагмент кода работает нормально.
ws.on('open', function open() {
ws.send(JSON.stringify({
method: "SUBSCRIBE",
params: ['!bookTicker'],
id: 1
}));
});
Вот где проблема:
ws.on('message', function incoming(data) {
//sets fresh_symbol to a string of the trading pair symbol
let fresh_symbol = JSON.stringify(JSON.parse(data)['s']);
//tries to filter out if fresh_symbol is undefined, doesn't work.
if (typeof fresh_symbol != undefined){
console.log(fresh_symbol.replace(/['"]+/g, ''));
}
});
Веб-сокет постоянно получает пейлоад (возможно, много сотен в секунду, я не уверен, но это много). Если я скажу коду просто console.log переменную fresh_symbol, код выведется просто отлично. Проблема возникает, когда я говорю коду вывести строку fresh_symbol, но с удалением двойных кавычек с обеих сторон с помощью метода .replace(). Даже используя этот оператор if для фильтрации, когда переменная не определена, я все равно получаю TypeError, в котором говорится, что:
console.log(fresh_symbol.replace(/['"]+/g, ''));
^
TypeError: Cannot read property 'replace' of undefined
Я предполагаю, что это как-то связано с тем фактом, что веб-сокет получает полезную нагрузку так быстро, что переменная fresh_symbol иногда перезаписывается при доступе к ней, но я понятия не имею, как решить эту проблему. Код выполняется в течение секунды или двух, выводя символы в нужном формате, прежде чем остановиться из-за ошибки. Я не профессионал, когда дело доходит до javascript, поэтому, пожалуйста, простите меня, если что-то здесь кажется очевидным.