JavaScript для переподключения / обновления / пребывания при высокой нагрузке или при превышении времени ожидания - PullRequest
0 голосов
/ 10 ноября 2018

Мне нужна помощь здесь. У меня есть переход или 2 веб-страницы (aspx). Первая страница предназначалась для воспроизведения видео, и после завершения воспроизведения оно будет перенаправлено на страницу 2, а затем снова на страницу 1. Цикл будет продолжаться 24/7 в Smart TV через веб-браузер.

У меня возникла проблема, из-за которой мне нужно было бы взять пульт дистанционного управления для обновления / повторного открытия веб-страницы при возникновении потери соединения:

connection lost

или время ожидания соединения:

connection timeout

Я попытался решить эту проблему, добавив JavaScript для проверки доступности соединения:

<script type='text/javascript'>
    document.getElementById('myVideo').addEventListener('ended', myHandler, false);
    function myHandler(e) {
        if (Offline.state === 'up') {
            window.location.href = '../Slide/SlideshowLSI.aspx';
        }
        else {
            this.currentTime = 0;
            this.play();
        }

    }
</script>

Что этот код делает, просто проверяет доступность соединения перед перенаправлением на следующую страницу. Если он обнаружит, что соединение не было доступно, он установит воспроизведение видео на 0 и продолжит воспроизведение видео снова. Затем он будет перенаправлен на следующую страницу после завершения воспроизведения видео и установления соединения.

Я думаю, что это решит проблему, связанную с проблемой потерянного соединения, но не с проблемой тайм-аута соединения.

Я все еще сталкиваюсь с проблемой, если происходит тайм-аут соединения, и мне нужно будет захватить пульт дистанционного управления, чтобы снова обновить / открыть веб-страницу на каждом из телевизоров Smart TV. У меня в общей сложности 15 умных телевизоров, которые сейчас открывают эти страницы 24/7.

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

Извините за мой английский. Прокомментируйте, если мое объяснение не было полным ... Спасибо.

1 Ответ

0 голосов
/ 13 ноября 2018

Если вы используете JQuery, вы можете просто запустить AJAX-запрос с тайм-аутом и поймать успех / ошибку.

<script>
function ping(){
   $.ajax({
      url: '/Slide/SlideshowLSI.aspx',
      timeout: 3000,
      success: function(result){
         window.location.href = '../Slide/SlideshowLSI.aspx';
      },
      error: function(result){
          this.currentTime = 0;
          this.play();
      }
   });
}

В противном случае в простом Javascript примерно так должно работать:

<script>
var xhr = new XMLHttpRequest();
xhr.open('GET', '/Slide/SlideshowLSI.aspx');
xhr.timeout = 4000; // Set timeout to 4 seconds
xhr.send(null);

xhr.ontimeout = function () {
    console.log("timed out");
}   

xhr.onreadystatechange = function () {
    var DONE = 4; // readyState 4 means the request is done.
    var OK = 200; // status 200 is a successful return.
    if (xhr.readyState === DONE) {
        if (xhr.status === OK)
            console.log(xhr.responseText); // 'This is the returned text.'
    } else {
        console.log('Error: ' + xhr.status); // An error occurred during the request.
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...