在我的应用程序中,有一个自定义要求来检测URL是否在浏览器中打开(即它可能在另一个选项卡,另一个窗口等)。有没有办法检测相同的?
它可以采用rails方式或使用客户端脚本。
我不确定这是一个好问题。
答案 0 :(得分:1)
我能做的唯一贡献就是如何运作:
<强>请强>
由于Rails works on requests,我建议“了解”某个网址是否“开放”的唯一方法是使用永久连接(WebSocket或long-polling)
通过使用websocket或long-polling,您可以不断提醒您是谁在请求您的控制器操作,从而为您提供有关哪些操作的信息
<强>连接强>
如果你正在使用websocket或长轮询技术,你可以这样做:
#app/controllers/your_controller.rb
def your_action
#can accept xhr requests
respond_to do |format|
format.html
format.js { render nothing #xhr request}
end
end
#app/assets/application.js
if (!!window.EventSource) {
var source = new EventSource(window.location);
}
source.addEventListener('message', function(e) {
console.log(e.data);
}, false);
这将继续请求您使用SSE
's的页面(主要使用长轮询),从而可以查看操作是否已打开
这是超级粗略的,但希望它会给你一些想法