Отображать динамический контент со встроенного веб-сервера - PullRequest
0 голосов
/ 07 марта 2012

У меня есть встроенное устройство с запущенной версией 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 (), чтобы присоединить показания датчика к переменной text для ответа.

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

Ответы [ 2 ]

1 голос
/ 08 марта 2012

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

  • Создайте псевдо-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 ", но он обладает исключительной свободой в представлении данных и расширении простого чтения и отображения с большим количеством функций.

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

0 голосов
/ 27 февраля 2013

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

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

Где "злобность" может включать:

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

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

...