我正在为少数用户(最多 10 个)编写一个小型 Grails 应用程序。它将托管在 Heroku 免费托管(1 dyno=512 MB RAM)上。
该应用程序将有一个用户表单,在提交时会触发一个 Ajax 请求,该请求会在 Controller 中生成一个线程。(通过 preventDefault() 阻止默认提交操作,因为该任务非常耗时并且 Heroku 的超时时间约为 30 秒)。
例如,线程从外部 api/url 获取项目列表, Controller 将有一个实例变量,例如 itemFetched
.用户表单的网页将包含一个进度小部件,该小部件将定期显示此 itemFetched
的值.usera
启动一个线程,当它在后台运行时,用户将看到 itemFetched
的状态当他离开该页面并再次点击该网址时。
如何创建“每个用户” Controller (只要通过 Ajax 线程产生的线程正在运行),而不是每个 HTTP 请求(即原型(prototype)范围)?
最佳答案
在这种特殊情况下, session 范围的服务将是完美的选择。您可以在 documentation 中了解更多信息。 .
通过使您的服务 session 具有范围,每个 HTTP session 都将拥有自己的服务实例,并且您可以在给定 session 中维护请求之间的状态。
关于ajax - Grails中Ajax请求的每个用户 Controller 的单例实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29381370/