nodejs を使用すると、リクエストにリスナーを追加できることがわかりました。
req.addListener('close', .... );
しかし、ダートの扱い方がわかりません。SourceEvent を使用してデータを送信するタイマーをキャンセルする必要があります。キャンセルしない場合、クライアントが切断されても実行を続けます。
編集:ユースケースを追加します
_time(HttpRequest request, HttpResponse response) {
response.headers..set(HttpHeaders.CONTENT_TYPE, 'text/event-stream')
..set(HttpHeaders.CACHE_CONTROL, 'no-cache')
..set(HttpHeaders.CONNECTION, 'keep-alive');
var timer = new Timer.repeating(1000, (_){
Date now = new Date.now();
response.outputStream..writeString('data:${now.millisecondsSinceEpoch}\n\n');
});
// Here what I want to do
request.onClose((event) => timer.cancel();
}
私のリクエストは、URL "/time" に対するリクエスト ハンドラによる従来の http リクエスト コールです。SourceEvent を使用して時間をクライアントにプッシュすると、正常に動作します。しかし、クライアントがいつ接続を閉じたかを検出する必要があります。検索した後、それを行う方法は、これを使用する nodejs witch を使用した多くのサンプルを見つけましたreq.addListener('close', ... )