Pregunta

Tengo un dispositivo integrado que ejecuta una versión reducida de un servidor HTTP.Actualmente, puede mostrar páginas HTML estáticas.Aquí hay un ejemplo de cómo muestra una página HTML estática:

   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);

Lo que me gustaría hacer es mostrar contenido dinámico, p. ej.una lectura de un sensor.Lo que pensé hasta ahora es actualizar la página de vez en cuando con

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

y use sprintf() para conectar la lectura del sensor al texto variable para la respuesta.

¿Hay alguna forma de que pueda hacer esto sin tener que actualizar la página constantemente?

¿Fue útil?

Solución

Puede probar el siguiente enfoque (según mi experiencia) :- Divida el contenido estático y dinámico, minimice el contenido dinámico.

  • Cree una interfaz pseudo CGI, es decir,URL your_embedded_site/sensor.cgi debe estar vinculado a la generación de la siguiente respuesta 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);

o simplemente (eso se trata de sus consideraciones de diseño):

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

  • Use javascript simple o un pequeño applet de java para solicitar periódicamente your_embedded_site/sensor.cgi.Tenga en cuenta que javascript generalmente depende del navegador y puede desactivarse, el applet de java también requerirá contenido estático adicional, algunos * sensor_reader .clase", pero tiene una libertad extraordinaria para presentar datos y extender la lectura simple y mostrarlos con más funciones.

Esto permite organizar la comunicación de manera muy eficiente, en lugar de recargar la página completa:parte del código, el front-end del usuario , se ejecutará en el navegador, otra parte, el back-end, en el dispositivo integrado.

Otros consejos

Por favor, hazlo no utilice un applet de Java para proporcionar esto.

AJAX y Javascript del lado del cliente facilitan este tipo de cosas, sin la maldad de un applet incrustado.

Donde "maldad" puede incluir:

  • Problemas de seguridad de Java
  • Discrepancias en el tiempo de ejecución de Java
  • mayor tamaño de la carga útil (los applets son grandes, en comparación con fragmentos de código Javascript)
  • problemas de velocidad (puede ser lento iniciar el applet)
  • la página web es más difícil de mantener
  • y así sucesivamente.

En resumen:es 2013, solo usa Javascript y AJAX.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top