Как реализовать окно журнала в веб-браузере? - PullRequest
2 голосов
/ 05 мая 2010

Я заинтересован в добавлении «окна журнала» на основе HTML / веб-браузера к моему сетевому устройству. В частности, мое устройство имеет настроенный веб-сервер и журнал событий, и я бы хотел оставить окно веб-браузера открытым, например, для http://my.devices.ip.address/system_log и отображать события в виде текста в окне веб-браузера по мере их появления. Люди могли бы использовать это как быстрый способ отслеживать, что делает система, без необходимости запускать какое-либо специальное программное обеспечение.

Мой вопрос: как лучше всего это осуществить? Я попробовал очевидный подход - просто держите встроенный веб-сервер моего устройства открытым на неопределенное время соединение HTTP / TCP и записывайте необходимый текст в сокет TCP при возникновении события, но проблема в том, что большинство веб-браузеров (например, Safari) не отображать веб-страницу до тех пор, пока сервер не закроет TCP-соединение было закрыто, поэтому в результате данные журнала никогда не появляются в веб-браузере, они просто действуют так, как если бы страница брала навсегда нагрузка.

Есть ли какая-нибудь хитрость, чтобы заставить это работать? Я мог бы реализовать его как Java-апплет, но я бы предпочел что-то более легкое / простое, используя только HTML или, возможно, HTML + JavaScript. Также я бы не хотел, чтобы веб-браузер «опрашивал» сервер, поскольку это либо привело бы к слишком большой задержке (если задержка перезагрузки была большой), либо к нагрузке на систему (если задержка была мала)

Ответы [ 3 ]

1 голос
/ 05 мая 2010

Если вы не хотите использовать опрос, вы более или менее застряли, когда пишете программу просмотра журналов полностью вне браузера. Тем не менее, довольно просто написать свой опрос, который хорошо справляется с минимизацией задержки и нагрузки на систему (о чем вы уже упоминали).

Хитрость заключается в том, чтобы использовать Comet , что по сути является Ajax + long polling.

0 голосов
/ 05 марта 2014

Так как это довольно старое сейчас.Вы можете использовать веб-сокеты для этого

0 голосов
/ 05 мая 2010

Ну, так как вы говорите, что готовы сделать это в javascript:

  • Ваш процесс должен непрерывно писать, не закрывая соединение
  • В клиенте (браузере) используйте объект xmlhttpobject и следите за состоянием готовности.

    0 = неинициализировано 1 = загрузка 2 = загружен 3 = интерактивный 4 = завершено

очевидно, что 3 и 4 - это то, что вы ищете. Когда вы получаете вывод, все, что вам нужно сделать, это записать responseText в div, и все готово. Посмотрите здесь для свойств и использования xmlhttpobject.

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