Domanda

Ho un dispositivo incorporato che esegue una versione ridotta di un server HTTP.Attualmente, può visualizzare pagine HTML statiche.Ecco un esempio di come visualizza una pagina HTML statica:

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

Quello che mi piacerebbe fare è visualizzare contenuti dinamici, ad es.lettura da un sensore.Quello che ho pensato finora è di aggiornare la pagina ogni tanto con

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

e utilizzare sprintf () per collegare la lettura del sensore al testo variabile per la risposta.

C'è un modo per farlo senza dover aggiornare costantemente la pagina?

È stato utile?

Soluzione

Puoi provare il seguente approccio (dalla mia esperienza):- Dividere il contenuto statico e dinamico, ridurre al minimo il contenuto dinamico.

  • Creare un'interfaccia pseudo CGI, ad es.URL your_embedded_site / sensore.cgi dovrebbe essere associato alla generazione della seguente risposta 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 semplicemente (questo è tutto sulle tue considerazioni di progettazione):

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

  • Utilizzare javascript semplice o piccola applet java per richiedere periodicamente your_embedded_site / sensore.cgi.Si noti che javascript è generalmente dipendente dal browser e può essere disattivato, l'applet java richiederà anche contenuti statici aggiuntivi - alcuni *sensor_reader.class " ma ha una straordinaria libertà nel presentare i dati e nell'estendere la lettura e la visualizzazione semplici con più funzionalità.

Questo permette di organizzare la comunicazione in modo molto efficiente, invece di ricaricare l'intera pagina:parte del codice - front-end dell'utente-verrà eseguita nel browser, altra parte-back-end-sul dispositivo incorporato.

Altri suggerimenti

Ti prego non utilizzare un applet Java per fornire questo.

AJAX e Javascript lato client rendono questo genere di cose facili, senza la cattiveria di un'applet incorporata.

Dove "cattiveria" può includere:

  • Problemi di sicurezza Java
  • Discrepanze di runtime Java
  • maggiore dimensione del payload (le applet sono grandi, rispetto ai frammenti di codice Javascript)
  • problemi di velocità (può essere lento per avviare l'applet)
  • la pagina web è più difficile da mantenere
  • e così via.

Riassumendo:è il 2013, basta usare Javascript e AJAX.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top