Web ビューで telnet インターフェイスからのデータを表示したいと思います。CANバスデータを読み取り、telnetポートに毎秒約40文字の約500行を生成するデーモンを実行しています。100 Hz で実行されるいくつかのメッセージと、10 または 5 Hz で実行される他のほとんどのメッセージであるため、合計で約 500/秒です。各パケットの最新の値を取得して、Web ページに表示したいと考えています。Web ページは (HTTP 経由ではなく) ローカルに読み込まれ、デーモンは別のホストにある可能性があるため、クロスドメイン通信が行われます。
これが私が試して失敗したことです:
- XMLHttpRequest を使用します。接続を開いてデータを読み取ることはできますが、onprogress イベントを取得したときに、responseText フィールドの以前の値をクリアできません。これは非常に急速に大きくなるため、responseText を解析して最新の値を取得する余裕はありません。メモリの問題も発生するので、これは仕方ありません。
- WebSockets と Socket.IO: どちらも、まず HTTP が直接ソケットに変換されることを期待しているため、telnet インターフェースへの接続に成功していません。
だから私の質問は、どうすればこれを達成するのが最善ですか? いくつかのオプションが表示されますが、他にもあると確信しています。
- アタッチしようとしているcanlogserverデーモンにHTTPからソケットへの変換を追加します。どのように?(オープンソースのCなので、追加できます)
- telnet 経由でデーモンに接続し、HTTP 経由でデータを Web ビューに送り返すことができる PHP インターフェイスを作成します。これは、IP スタックを複数回通過するため、非常に非効率的です。<
- バッファの問題を回避し、telnet サーバーからメッセージを読み取り、データを表示してからバッファをダンプするために、JS クライアント コードに他に何かありますか? ソケットが開いたらすべてのメッセージを確実に取得する必要があるため、メッセージが失われるため、開いたり、閉じたり、再度開いたりすることはできません。
ありがとう、
ティム