2017-03-13 17 views
2

次のnodeJSサーバーが正常に動作しているようです。私は、サーバーからメッセージを受信し、メッセージに基づいていくつかのJSを呼び出すクライアントを記述したいと思います。関与nodejs - nodeJSサーバーに接続してブロードキャストメッセージを受信するクライアントを書く方法

手順は次のとおりです。

  1. ユーザーはhttp://server.xyz.com:8080/pa
  2. nodeJS Serverはpaは、API呼び出しを受信したと接続されたクライアントへのコールと放送を受信URLにアクセスします。
  3. nodeJSサーバーに接続されているクライアントは、paアクションに関連するJSを呼び出します。

私の質問は次のとおりです。クライアントの場合

1. How do I make sure the server broadcasts that message like Step 2? 
2. How do I write a client that performs Step 3 above. 

、私はsocket.ioへの参照をたくさん見ていますが、私はこのケースで最高のフレームワークだかわからないです。

server.js

var http = require('http'); 

http.createServer(function(request, response) { 
    request.on('error', function(err) { 
    console.error(err); 
    response.statusCode = 400; 
    response.end(); 
    }); 
    response.on('error', function(err) { 
    console.error(err); 
    }); 

    response.writeHead(200, {'Content-Type': 'application/json'}); 
    var body=[]; 
    if (request.method === 'GET' && request.url === '/pa') { 
    response.end(JSON.stringify({"action": "pa"})); 
    } 
    else if (request.method === 'GET' && request.url === '/pi') { 
    response.end(JSON.stringify({"action": "pi"})); 
    } 
    else { 
    response.statusCode = 404; 
    response.end(); 
    } 
}).listen(8080); 

答えて

0

クライアントはNode.jsの中でもあるなら、あなたはウェブフック/プッシュサービスを設定することができるはずです。ウェブフックは今日のあらゆる主要なAPIで使用されていますが、スラックとマイクロソフトでは非常に一般的です。以下は、MicrosoftのOffice 365 pushおよびstreamingサービスAPIに触発されています。

クライアントがPOSTできるルートを追加します。これを/subscribeとします。 /subscribeへのリクエスト本文には、URLが含まれています。これはpaReceiverUrlと呼ばれます。

/paエンドポイント、クライアントがでそれらを通知する/subscribeエンドポイントにリクエストを送信し、場所を含めることができたときに他の誰かがメッセージをクライアントに通知することを希望する場合 - 、他の情報と一緒に(paReceiverUrlおそらくいくつかの認証をデータ)。サブスクライブされたクライアントの情報を不揮発性ストレージに保存して安全に保管し、データベースでこれを行うか、複雑になるまでファイルに書き込むようにしてください。

今すぐあなたの'/pa'ルートは、より多くのこのような何か(あなたのステップ2)は以下のようになる。

if (request.method === 'GET' && request.url === '/pa') { 
    // Send response to the request sender 
    response.end(JSON.stringify({"action": "pa"})); 
    // Get subscribed clients' information 
    var subscribedClients = <Read from file or db> 
    // Broadcast 
    for(var i = 0; i < subscribedClientsUrls.length; i++) { 
     // Send them a request at subscribedClients[i].paReceiverUrl 
    } 
} 

は、今すぐあなたのステップ3のために、クライアントは単純に自分のサーバがそのpaReceiverUrlで要求を受け入れ、そこに彼らができる持っている必要があります彼らが望むどんなJSでも呼び出します。

もっとリアルタイムにする必要がある場合は、Webソケットプロトコルを使用して、データをストリームする永続HTTP接続を設定します。

関連する問題