組み込みwebサーバーからの動的コンテンツの表示
-
09-12-2019 - |
質問
私は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()を使用して、センサーの読み取り値を テキスト 応答の変数。
ページを常に更新せずにこれを行う方法はありますか?
解決
あなたは(私の経験から)次のアプローチを試すことができます:-静的コンテンツと動的コンテンツを分割し、動的コンテンツを最小限に抑えます。
- 擬似CGIインターフェイスを作成します。URL あなたの_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アプレットを使用します あなたの_embedded_site/sensor.cgi.Javascriptは一般的にブラウザに依存し、オフにすることができることに注意してください、javaアプレットはまた、追加の静的コンテンツを必要とします-some*sensor_reader。クラス"しかし、それはデータを提示し、より多くの機能を備えた簡単な読み取りと表示を拡張する際に特別な自由を持っています。
これにより、ページ全体をリロードするのではなく、非常に効率的な方法で通信を整理することができます:コードの一部(ユーザーのフロントエンド)はブラウザで実行され、他の部分(バックエンド)は組み込みデバイスで実行されます。
他のヒント
してください ない これを提供するには、Javaアプレットを使用します。
AJAXとJavascriptクライアント側は、組み込みアプレットの厄介さなしに、この種のことを簡単にします。
「厄介さ」には次のものが含まれます。:
- Javaセキュリティの問題
- Javaランタイムの不一致
- ペイロードサイズの増加(javascriptコードのスニペットと比較してアプレットが大きい)
- 速度の問題(アプレットの起動が遅くなる可能性があります)
- webページを維持するのが難しい
- というように。
要約すると:それは2013年です、ちょうどJavascriptとAJAXを使用してください。