Метод, чтобы знать, упавший ли сервер с Сервер-Сент Эвент

Я нуждаюсь в каком-то методе, который говорил бы мне, упавший ли сервер.

У меня есть следующий код, например:

var conexion       = new EventSource(server + 'config.php');
conexion.onmessage = function(e) { alert('Está conectado'); }
conexion.onerror   = function(e) { alert('Está caído.'); }

Вопрос - что бдительность, которая был бы должен появляться, когда он упавший, он появляется, когда сервер соединен. Выходит две бдительность, но вторая была бы должна выходить одинокой, в случае когда - ошибка.

4
задан 14.01.2017, 19:55
0 ответов

То, что последует за тобой, что:

  1. Когда сервер прокручивает изображение в окне, делается она первый вызов, что стреляет в события onopen и onmessage.
  2. Связь закрывается, что стреляет в событие onerror.
  3. Автоматически осуществляется "re связь" (aprox. каждые 3 секунды), что вызывает, что он вновь начинает цикл (а именно, мы направляем в шаг 1)

Чтобы санкционировать, что сервер упавший, ты мог бы делать следующее:

  1. Создавать флаг, например isOpen, чтобы определять, если было возможно устанавливать связь.
  2. Подписываться на событие onopen и изменять стоимость переменной isOpen в true.
  3. Подписываться на событие onerror и использовать вышеупомянутый флаг, чтобы определять если:

    • Сервер "упавший" (никогда не было возможно устанавливать связь)
    • Или если была ошибка, попробовав получать ответ (обосновался один, наладь связи, но у контента ответа не было ожидаемого формата)

Так например:

(function() {
    var source = new EventSource(server + 'config.php');
    var isOpen = false;

    source.addEventListener('message', function(e) {
        console.log(e.data);
    }, false);

    source.addEventListener('open', function(e) {
        // Server up
        console.log('El server esta corriendo');
        isOpen = true;
    }, false);

    source.addEventListener('error', function(e) {
        if (!isOpen && source.readyState == EventSource.CONNECTING) {
            // Server down
            console.log('El server esta caido');
        }
        else if (source.readyState == EventSource.CLOSED) {
            // Server error
            console.log('Error en el server');
        }
        isOpen = false;
    }, false);
})();

Шрифт: Stream Updates with Сервер-Сент Эвентс

2
ответ дан 03.12.2019, 17:40
  • 1
    Нет, он не помогает мне. Включенный я сделал следующее, чтобы подтверждать: conexion.addEventListener (' error' function () { if (conexion.readyState == EventSource. CLOSED) {//Server down console.log (' server эта caido'); } console.log (conexion.readyState); }, false); и он возвращает меня с 0 всегда. –  15.01.2017, 05:26
  • 2
    @OmarAristides, я обновил мой ответ. –  15.01.2017, 12:58

Теги

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