Как сделать longpoll несколько URL-адресов с помощью JavaScript? - PullRequest
0 голосов
/ 13 октября 2019

Цель состоит в том, чтобы несколько соединений longpoll были открыты для нескольких URL-адресов (например, example.com/user/1, example.com/user/2 и т. Д.), А когда данные обновляются, обрабатывают их и повторно подключают. Вот простой пример того, что у меня есть:

async function longpoll(url) {
    http.get(url, (response) => {
        response.on('data', (data) => {
            // do something with data
        }
        response.on('end', () => {
            // cleanup
            longpoll(url)
        }
    }
}

Я продолжаю, но это базовая настройка. Это работает для одного URL, но если я пытаюсь добавить больше, как в цикле, он закрывает все, кроме одного. Может ли кто-нибудь указать мне, как я могу это сделать?

1 Ответ

1 голос
/ 13 октября 2019
function startLongPollingForMultipleUrls(urls) {
    urls.forEach(url => longpoll(url);
}

function longpoll(url) {
    http.get(url, (response) => {
        response.on('data', (data) => {
            // do something with data
        }
        response.on('end', () => {
            // cleanup
            // Use a timeout to wait 1 second between calls
            setTimeout(() => longpoll(url), 1000)
        }
    }
}

const myUrls = ['example.com/user/1', 'example.com/user/2']

startLongPollingForMultipleUrls(myUrls);
...