Socket.IOを使用して、クライアントのWebページにNode.JSサーバーから動的にデータをフェッチさせています。サーバー側では、zeromqソケットライブラリ(REQ / REP構造、zguideのrrclient.jsの例を参照)を使用して、リクエストをPythonバックエンドに転送しています。
ただし、私のサーバーはsocket.ioサーバーとして機能しているため、特定のクライアントに返送するには、応答を次のようにラップする必要があります。
socket.on('app_request',function(appRequest){
//route this request to the backend.
var results = fetch_data(appRequest);
//return it to the client
socket.emit('app_results',results);
});
そのため、fetch_data関数はzmqソケット(socket.send)を使用してサーバーにリクエストをプッシュします。
ただし、Node ZMQソケットは、socket.on('message'、function(){});を使用して要求に応答します。リスナーであり、実際には何も返しません。
socket.on('message'、function(){});を使用するにはどうすればよいですか。socket.send()リクエストを開始した特定の関数に値を返すには?
つまり、クライアントのsocket.ioリクエストを取得して、Node.JSがZMQを使用してPythonバックエンドから関連データをフェッチし、それをsocket.ioクライアントに返すようにするにはどうすればよいですか?(もちろん、ノンブロッキング方式で)