处理中止的http请求Ruby on Rails



我一直在重新编辑一篇文章https://www.meziantou.net/handling-aborted-requests-in-asp-net-core.htm我想知道Rails中是否有处理客户端中止请求的功能
我一直认为处理这种情况是不可能的。也许有些人对此有任何想法。

问题我们有遗留项目,一些http请求非常重,执行起来不是异步的。这意味着客户端可以等待一段时间,然后关闭选项卡或重新加载页面。但这个繁重的请求仍然在服务器端(RubyonRails(上执行

我的想法从客户端我们可以生成uniq X-Request-ID并将其填充在请求头中。然后在服务器端,我们可以将这个id保存在Redis中并设置updated_at=Time.now。如果rails应用程序完成请求=>从Redis中删除X-Request-ID。之后,我们可以从客户端发送轮询请求来更新此uniq id的时间。使用Sidekiq worker,我们可以获取所有不再更新的id。是否可以通过X-request-ID阻止服务器执行请求?

p.S.我知道最好使用web套接字来处理连接中止,但我需要为http请求这样做。

您可以考虑使用此功能JS来提醒客户端不要重新加载并中止请求

<script type="text/javascript">
window.onbeforeunload = function() {
return "Dude, are you sure you want to leave? Think of the kittens!";
}

如果用户确认中止,则保存(内容缓存(并在用户返回页面时提供服务。

最新更新