同様の質問を調べて、何をしようとしているのかをGoogleに試しましたが、具体的なことは何も見つかりませんでした。
私がやろうとしていること:私が働いている場所では、タグ、マシンの状態、その他の標準的なSCADA機能を表示するHMI/SCADAシステムを使用しています。最近、SCADAシステムからHTTPリクエストを送信する方法を見つけ、スピンアップしたExpressサーバーへのタグ値およびその他の同様のデータの送信をテストしました。ここで、値は約1秒ごとにPOSTされます(監視またはレポートのため、温度について考えてください)毎秒の温度を報告するゲージ)。私たちが使用するシステムは「最先端」と見なされていますが、特に最新のWebアプリケーションと比較すると、ユーザーインターフェイスはブロック状で欠けています。 SCADAシステムからPOSTエンドポイントにデータを送信し、それをNode.js/Expressアプリケーションで処理して内部Webサイトに報告するというアイデアがありました。このようにして、グラフとチャート(D3またはchart.ioから)およびBootstrapやTailwindCSSなどのビルド済みUIコンポーネントライブラリを使用できます。
私の質問:SCADAアプリケーションを使用して、データペイロードと共にHTTP POSTリクエストを送信します。 Expressサーバーが要求を受信し、メッセージをログに記録することを確認できます。ただし、POSTされたデータを単一の(今のところ)HTMLページに送信する方法がわかりません。 SCADAアプリケーションから制御しようとしているprogress bar
Bootstrapコンポーネントを含むシンプルなHTMLページがあります。 フロントエンドコンポーネント(たとえば、グラフまたはBootstrapプログレスバー)を結び付けて、POSTエンドポイントにヒットしたときに更新する方法は?Javascript fetch()
を使用できますが、SCADAシステムは必ずしも設定された間隔でPOSTとは限りません。 POSTリクエストはポーリングなしで行われます(つまり、フロントエンドから頻繁にfetch()
を使用します。これは悪い考えだと思います)。
また、私がやろうとしていることに関して他の問題を予測できる場合は、フィードバックをいただければ幸いです。これは私たちの会社にとって未知の領域であり、それがうまくいけば、このようにしてレポートやその他のユーザーコンテンツを構築する可能性が高く、ラグなしで1秒あたりの多くのリクエストをサポートし、瞬時に変更する強固な基本アーキテクチャを作成したいと思いますUIに。
これはかなり標準的です。サーバーにPOSTされたデータを、高速サーバーのメモリー内のデータ構造(変数)に保存するだけです。その後、それを取得できます。最新のデータのみに関心がある場合は、データベースでは多すぎるでしょう。時間の経過に伴うデータが必要な場合は、データベースに保存することを検討する必要があります。
投票に関しては、評判ほど悪くはありません。すでに既知の間隔(1秒)でデータを取得しているため、同様の間隔または分数(5秒)でフロントエンドからデータをポーリングするのが妥当です。フロントエンドの帯域幅が限られている場合は、サーバーに変更ロジックを実装して、同じ場合はデータデータを送信しないようにすることができますが、データが同じであっても可能かどうかはわかりません20代と言います。そうでない場合、おそらく努力する価値はありません。努力する価値があると判断した場合は、npmパッケージのexpress-wsなどを調べてください。