2012-03-07 9 views
0

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

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

+0

Не могли бы вы опросить датчик и инициировать обновление при наличии новых данных? – toomanyairmiles

+0

Да, но в этом случае вам все равно нужно обновить веб-страницу, чтобы получить обновленное значение датчика, верно? – alexb

+0

Уверен, но должен быть способ сделать это с помощью ajax, чтобы вы только перезагрузили раздел страницы? Я думаю, что этот вопрос может быть лучше для программистов или переполнения стека. – toomanyairmiles

ответ

1

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

  • Создание интерфейса 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

Этот метод JavaScript отлично подходит для моего приложения. Благодаря! – alexb

0

Please do нет использовать Java-апплет для этого.

AJAX и клиентская сторона Javascript делают эту вещь простой, без гадости встроенного апплета.

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

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

Подводя итог: это 2013 год, просто используйте Javascript и AJAX.

Смежные вопросы