请求关闭时,在PlayFramework中停止枚举器和迭代器

时间:2015-10-28 16:00:54

标签: scala playframework-2.3 reactivemongo enumerator iterate

我在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服务器发送数据。

0 个答案:

没有答案