@Nikolay37

Каким образом правильно поставить обработчик событий под socket.io?

Подключаюсь к websocket серверу в качестве socket.io клиента, при этом параллельно приходит информация от другого сервера (через pusher), которую сначала парсю, потом по websocket соединению (через socket.emit) отправляю эту информацию. При этом могу отправить 1 запрос в секунду, а могу к примеру 20, из-за этого - в websocket приходит ошибка, о том, что запросов много. Я сделал так - подключился к 2м обработчикам, нужной мне информации и ошибкам. Нужную же информацию, от другого сервера (pusher), я добавляю в массив, оттуда же я ее отправляю к websocket (socket.emit). Если получаю ошибку - жду и вновь отправляю, если получаю не ошибку - из массива убираю элемент и проверяю дальше. При этом - нужно проверять массив, дабы понимать - пустой он или нет, из-за этого я вызываю еще 1 функцию, которую проверяю каждые 5мс (это для меня важно, те же 100мс - будет уже долго). Отсюда вопрос - можно ли сделать как-то более правильно и как сильно в целом это влияет на всю ситуацию, если процессор нагружает на пол процента?
let array = []
let start = true

setInterval(checkSocket, 5)

function checkSocket() {
    if (array.length > 0 && start == true) {
        start = false
        socket.emit('123')
    }
}

socket.on('joined', () => {
    console.log('подключился')
});

socket.on('error', function incoming(err) {
    setTimeout(() => socket.emit('123'), 200);
})

socket.on('message', function incoming(mes) {
    console.log(mes)
    array.shift()
    start = true
})
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы