2017-10-03 12 views
1

サーバー上で常に更新され、ファイルに書き込まれるデータ(100ミリ秒ごと)があります。クライアント側に転送する必要があります。これはsetInterval関数を使用して行います。同じ間隔)、このJSONファイルをチェックして、それが問題の正しい解決策であるかどうかを確認できません。JSのサーバーから常時データを更新するには?

サーバ側コード:

function SerialPortStart(COM, Input){ 
console.log(COM, Input); 
var serialPort = new SerialPort(COM, { 
    parser: SerialPort.parsers.readline('\n'), 
    baudrate: +Input || 9600 
}); 
serialPort.on('data', function (data) { 
    thermodata = data.toString(); 
    console.log(data); 
    fs.writeFileSync(__dirname +'/views/cockpit.json',JSON.stringify(thermodata)); 
}); 

}。

クライアント側コード:あなたはAJAXの分野では、もはや今ある

function SerialPortStart(){ 
var xhr = new XMLHttpRequest(); 
setInterval(function() { 
    xhr.open('GET', 'cockpit.json', true); 
    xhr.send(); 
      xhr.onreadystatechange = function() { 
       if(this.status == 200) { 
        var data = JSON.parse(xhr.responseText); 
        console.log(data); 
        obj = data.split(';'); 
        if(cockpitNum[3] != null){ 
         $('header .mainBlock1 .cockpit .elements .blockHaw .cirle').css({ 
          transform: 'rotate('+(obj[cockpitNum[3]]) +'deg)' 
         }); } 
        }, 50); 

答えて

2

。通常のリクエストは、完了するまでに約500msかかりますが、それを遅くしたり離れたりすると、多くのリソースを消費します。

Websocketを学習する時間。 websocketは(ソート)小さな接続(ちょうどhttpのような)ですが、それは(呼び出しの終わりに閉じるhttpとは異なり)近くdoesnt。この方法で、websocketに接続されたすべてのユーザーにデータをブロードキャストできます。これは超高速です。

Node.jsは、これをSocket.ioで設定できるようにする例です。あなたはあなたの状況を一種のチャットの一種と考えることができます:)

+0

感謝を。プロトコルWebSocketを見つけましたが、socket.io以外にもこの場合は何をお勧めしますか? –

+0

私はそれを聞いた、AFAIKそれはいいです。あなたは面白いものは必要ありません。ソケットについては、 – Martijn

+0

@Martijn - OPはクライアントとしてブラウザを使用しています。ブラウザからソケットを使用することはできません。ブラウザでの選択肢は、Ajax(http)接続またはwebSocket接続です。 – jfriend00

0

あなたはあなたのウェブページからあなたのサーバーへのsocket.ioライブラリを開き、socket.io接続を開くことをお勧めします。これは、クライアントとサーバーの間の連続的な接続であり、非常に低いオーバーヘッドでクライアントからサーバーまたはサーバーへのいずれかの方向にデータを送信できるようにします。クライアントとサーバー間の多くのトランザクションに最適で、サーバーが定期的にクライアントにデータを送信したい場合に最適です。クライアントからのAjaxポーリングよりも効率的です。

着信socket.io接続をリッスンするnode.jsサーバーを実装します。相手側でリッスンしているユーザーを確立するために必要な認証があれば、サーバーは定期的にそのクライアントデータを送信できますそれを送信する。

socket.io hereについて読むことができます。クライアントとサーバーの両方のライブラリがあります。クライアントサイドライブラリはwebSocketトランスポートを使用していますが、socket.ioはsocket.ioの上にいくつかの非常に便利な機能を追加しています(接続監視、自動再接続、JSONへの自動直列化、等...)。

は、WebSocketをの上に追加されますsocket.io機能の一覧については、この記事を参照してください:返信用

Socket.io features beyond plain webSocket

+0

ありがとうございました。 –

関連する問題