我在Play Framework应用程序中使用枚举器。当请求被发送到特定URI时,我调用一个MongoService(使用reactivemongo)返回一个枚举器,然后使用Ok.chunked(stream)
通过HTTP流发送此结果,问题是如果我在接收时关闭浏览器此流响应,Play Framework不断从reactivemongo枚举器接收数据。如何在客户端关闭浏览器时取消mongo枚举器?
编辑: 代码示例
我从reactivemongo获得的调查员:
def findStreamByCriteria(criteria: JsObject, limit: Int): Enumerator[E] = {
collection.find(criteria).cursor[E](readPreference = ReadPreference.primary).enumerate(limit)
}
然后,在我的控制器中,我有:
val stream = service.findStreamByCriteria(query)
Future {
Ok.chunked(stream)
}
问题是当取消分块请求时,reactivemongo会不断向HTTP服务器发送数据。