在 Ruby on Rails 上的客户端取消对后端的请求后会发生什么?

问题描述

我想知道 ruby​​ on rails 请求是如何工作的。如果我向 Ruby on Rails 上的控制器的操作发出 XHR 请求,但在它完成之前我重新加载页面,尽管客户端未收到响应,操作是取消还是执行 all 方法,会发生什么情况? 我想知道,因为根据我的方法,我正在创建到另一台服务器的 tcp 连接以运行一些脚本,但在该方法完成之前我必须手动关闭该连接,所以我检测到一些 tcp 连接保持打开状态,我认为是因为有时请求在完成之前被取消,并且关闭tcp连接的部分方法没有正常运行。

解决方法

如果您的客户端提交了请求,并且 rails 开始处理该请求,那么即使客户端断开连接并且不等待响应,它也会继续。在 rails 控制器中,您不会看到任何错误或任何表明客户端已断开连接的内容。

此外,如果您正在进行 HTTP 调用并且不关心响应,我建议您使用某种异步队列来发出这些请求(例如 sidekiq)。这样,如果您开始关注响应,您实际上可以建立一些监控。