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() 将传感器读数附加到响应的文本变量。

有没有一种方法可以做到这一点而不必不断刷新页面?

4

2 回答 2

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”,但它在呈现数据和扩展简单阅读和显示更多功能方面具有非凡的自由度。

这允许以非常有效的方式组织通信,而不是重新加载整个页面:部分代码 - 用户前端 - 将在浏览器中执行,其他部分 - 后端 - 在嵌入式设备上。

于 2012-03-07T20:42:29.487 回答
0

请不要使用Java 小程序来提供此功能。

AJAX 和 Javascript 客户端使这种事情变得简单,没有嵌入式小程序的麻烦。

其中“肮脏”可以包括:

  • Java 安全问题
  • Java 运行时不匹配
  • 增加的有效负载大小(与 Javascript 代码片段相比,小程序很大)
  • 速度问题(启动小程序可能很慢)
  • 网页更难维护
  • 等等。

总结:现在是 2013 年,只使用 Javascript 和 AJAX。

于 2013-02-27T16:18:06.243 回答