我看到使用 nodejs 可以在请求中添加侦听器:
req.addListener('close', .... );
但我找不到如何处理 Dart。我需要取消一个使用 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的样本都使用了这个req.addListener('close', ... )