Pergunta

Eu tenho um dispositivo incorporado executando uma versão simplificada de um servidor HTTP.Atualmente, ele pode exibir páginas HTML estáticas.Aqui está um exemplo de como ele exibe uma 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);

O que eu gostaria de fazer é exibir conteúdo dinâmico, por exemplo.uma leitura de um sensor.O que pensei até agora é atualizar a página de vez em quando com

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

e use sprintf() para anexar a leitura do sensor ao texto variável para a resposta.

Existe uma maneira de fazer isso sem precisar atualizar a página constantemente?

Foi útil?

Solução

Você pode tentar a seguinte abordagem (pela minha experiência):- Divida conteúdo estático e dinâmico, minimize o conteúdo dinâmico.

  • Crie uma interface pseudo CGI, ou seja,URL seu_site_embedded/sensor.cgi deve estar vinculado à geração da seguinte resposta 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);

ou apenas (isso é tudo uma questão de considerações de design):

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 simples ou pequeno miniaplicativo java para solicitar periodicamente seu_site_embedded/sensor.cgi.Observe que o javascript geralmente depende do navegador e pode ser desativado. O miniaplicativo java também exigirá conteúdo estático adicional - alguns *sensor_reader.class", mas tem uma liberdade extraordinária na apresentação de dados e na extensão da leitura e exibição simples com mais recursos.

Isto permite organizar a comunicação de forma muito eficiente, em vez de recarregar a página inteira:parte do código - front end do usuário - será executada no navegador, outra parte - back end - no dispositivo embarcado.

Outras dicas

Por favor faça não use um miniaplicativo Java para fornecer isso.

AJAX e Javascript do lado do cliente facilitam esse tipo de coisa, sem a maldade de um miniaplicativo incorporado.

Onde "maldade" pode incluir:

  • Problemas de segurança Java
  • Incompatibilidades de tempo de execução Java
  • aumento do tamanho da carga útil (os miniaplicativos são grandes, em comparação com trechos de código Javascript)
  • problemas de velocidade (pode ser lento para iniciar o miniaplicativo)
  • página da web é mais difícil de manter
  • e assim por diante.

Resumindo:estamos em 2013, basta usar Javascript e AJAX.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top