Node.jsには、リクエストを処理するのに時間がかかるとします。したがって、リクエストを受け取り次第、サーバーは「私はあなたのリクエストを復活させました。私はあなたにすぐに戻ってきます」と返答したいと考えています。その後、要求が処理されると、サーバーは今回は実際の応答でクライアントに戻りたいと考えます。どうすればそれをすることができますか? 以下のコードスニペットでは、エラー(接続が閉じられたかどうかなど)が表示されます。同じリクエストに対して2つの応答を送信する
'use strict';
var http = require('http');
var numberOfRequests = 0;
http.createServer(function (request, responce) {
request.n = numberOfRequests;
console.log('Request number ' + numberOfRequests + ' recioved!');
responce.writeHead(200);
responce.write("soon we will get back to you for your request# " + request.n);
responce.end();
setTimeout(function() {
responce.writeHead(200);
responce.write("Responce to your request# " + request.n);
console.log("Responce to the request# " + request.n);
responce.end();
}, 5000);
numberOfRequests++;
}
).listen(8080);
console.log('listening ...');
あなたはできません。 HTTProtocolを使用してリクエストごとに1つのレスポンスしか得られないので、レスポンスが "まだ"ではない場合、*または*ダイレクトソケット接続をセットアップして、クライアントとサーバーがプッシュで通信できるようにする必要があります標準のHTTPではなく通知プロトコルを使用します。 –
@ Mike'Pomax'Kamermansもう少し詳しく教えてください –
「いいえ、HTTPでは複数の応答を送信できません.1つの要求は1つの応答を受け取ったときに処理されると見なされます」。それ以上のことをしたいのであれば、それで動作するRESTfulアーキテクチャを設計するか、Webソケットのような任意の通信を可能にする別のプロトコルを使用する必要があります。 –