2016-01-20 4 views
1

Прежде всего, благодаря всем замечательным ответам, которые я видел, которые помогли мне с прошлыми проектами.Использование javascript для обновления в реальном времени из файла на моем сервере

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

99% этого, у меня есть работа. То, что мне нужно (нужно) сделать сейчас, - это простая страница проверить статус файла на моем веб-сервере и изменить его в реальном времени.

Содержание файла будет один из следующих слов ТОЛЬКО:

On, Off, открыто или закрыто.

Я могу использовать обновление страницы, и мой внутренний ASP будет выполнять эту работу, но я хочу что-то немного более элегантное, чем фликер страницы при обновлении. Итак, я решил, что если там был какой-то способ, чтобы проверить содержимое файла в JavaScript, то я могу просто сделать что-то вроде следующего, используя содержимое файла в переменную fileContents:

document.GetElementById('image').src = 'MyServer.address/GFX/' + fileContents + '.png' 

Этот путь, когда файл изменяется на моем сервере, изображение, отображаемое на странице, изменяется (приближается) в реальном времени без мерцания.

Пожалуйста, помогите мне найти недостающую ссылку в этом сценарии.

Я хотел бы сохранить итоговую страницу как можно более компактной. Вот пример страницы, которая генерирует мой ASP:

http://ssbbs.dyndns.org/panic/isy.asp?A=3D30711&T=S

Это показывает зеленый круг, если устройство я опрос включен и синий круг, если устройство выключено.

Файла Я буду читать как пример:

http://ssbbs.dyndns.org/panic/ISY/3D30711.txt

ответ

0

Использование Javascript AJAX вызова вашего ASP скрипта. Вы можете получить статус и обновить страницу без каких-либо обновлений. JQuery особенно полезен для таких вещей.

+0

Я надеялся, что смогу сделать это с использованием чистого JavaScript и не загружать библиотеку jQuery. Я хочу сохранить конечный результат как можно более легкий. В конечном итоге это использование обратной связи для освещения Insteon через iRule. iRule предоставляет обратную связь, но по некоторым причинам более 1 обратная связь для устройства Insteon заставляет обновление обратной связи принимать навсегда и умножается на каждую добавленную обратную связь. Так как у меня будет много этих страниц, то их сохранение - огромная выгода. jQuery в этом случае представляет собой тонну ненужных накладных расходов. –

0

Я определил способ достижения своей конечной цели, считающейся не совсем изящной, простой и малой, которая заполняет мои основные требования.

Мерцающая обновляющая страница теперь хранится в скрытом iframe, а затем повторяющийся javascript обновляет статическую страницу без мерцания. На обновляющейся странице больше не отображается отображаемое изображение, а просто исходное имя файла изображения, обновленного javascript. IE: GFX/feedback/Off.png

<!DOCTYPE HTML> 
<HTML> 
    <HEAD> 
    <STYLE> 
     BODY {background: #000000; color: #FFFFFF;} 
     #isy {visibility: hidden; height:0px;width:0px;} 
    </STYLE> 
    </HEAD> 
    <BODY onload="isyRead();"> 

    <IMG ID="state" SRC="GFX\feedback\blank.png"> 

    <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> 
     function isyRead() { 
      var isy = document.getElementById('isy'); 
      if (isy.contentDocument) isy.contentDocument.location.replace("isyRead.asp?A=3C3FE71&T=S"); 
      else isy.src = "isyRead.asp?A=3C3FE71&T=S"; 
      setTimeout(function(){document.getElementById('state').src=isy.contentWindow.document.body.innerHTML}, 100); 
      setTimeout(isyRead, 4000); 
     } 
    </SCRIPT> 

    <IFRAME SRC="about:blank" ID="isy"></IFRAME> 
    </BODY> 
</HTML> 

Надеюсь, кому-то это будет полезно.