Отображение динамического контента со встроенного веб-сервера

StackOverflow https://stackoverflow.com//questions/9607696

  •  09-12-2019
  •  | 
  •  

Вопрос

У меня есть встроенное устройство, на котором работает упрощенная версия HTTP-сервера.В настоящее время он может отображать статические HTML-страницы.Вот пример того, как он отображает статическую HTML-страницу:

   char *text="HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"
          "<html><body>Hello World!</body></html>";
   IPWrite(socket, (uint8*)text, (int)strlen(text));
   IPClose(socket);

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

<meta http-equiv="refresh" content="600">

и используйте sprintf(), чтобы прикрепить показания датчика к текст переменная для ответа.

Есть ли способ сделать это без необходимости постоянно обновлять страницу?

Это было полезно?

Решение

Вы можете попробовать следующий (из моего опыта) подход:- Разделите статический и динамический контент, сведите к минимуму динамический контент.

  • Создайте псевдо-CGI-интерфейс, т.е.URL-адрес your_embedded_site/sensor.cgi должен быть привязан к генерации следующего HTTP-ответа:

sprintf(cgi_str, "HTTP/1.0 200 OK\r\nContent-Type: text\r\nContent-Length: %d\r\n\r\nvalue=%02d", 8, sensor_value);

или просто (это все, что касается ваших дизайнерских соображений):

sprintf(cgi_str, "HTTP/1.0 200 OK\r\nContent-Type: text\r\nContent-Length: %d\r\n\r\n%02d", 2, sensor_value);

  • Используйте простой JavaScript или небольшой Java-апплет для периодических запросов. your_embedded_site/sensor.cgi.Обратите внимание, что javascript обычно зависит от браузера и может быть отключен. Java-апплет также потребует дополнительного статического контента - некоторого *sensor_reader.class", но он обладает исключительной свободой в представлении данных и расширении простого чтения и отображения с помощью дополнительных функций.

Это позволяет очень эффективно организовать общение, вместо перезагрузки всей страницы:часть кода — пользовательский интерфейс — будет выполняться в браузере, другая часть — серверная часть — на встроенном устройстве.

Другие советы

Пожалуйста, сделай нет используйте Java-апплет, чтобы обеспечить это.

AJAX и клиентская часть Javascript упрощают подобные задачи без необходимости использования встроенного апплета.

Где «гадость» может включать в себя:

  • Проблемы безопасности Java
  • Несоответствия времени выполнения Java
  • увеличен размер полезной нагрузки (апплеты большие по сравнению с фрагментами кода Javascript)
  • проблемы со скоростью (апплет может запускаться медленно)
  • веб-страницу сложнее поддерживать
  • и так далее.

В итоге:сейчас 2013 год, просто используйте Javascript и AJAX.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top