gpt4 book ai didi

ruby-on-rails - 用户断开连接检测(即 "Online Status")守护进程

转载 作者:可可西里 更新时间:2023-11-01 02:55:05 24 4
gpt4 key购买 nike

总结:是否有一个守护进程可以在用户通过 TCP 连接/断开连接时进行回发,或者写一个守护进程是个好主意吗?

详细信息:已经有很多问题基于此;但我相信这是一个不同的“扭曲”。我们正在编写一个 Ruby on Rails 网络应用程序,我们希望能够判断用户是“在线”还是“离线”,其中适用以下定义:

  • “在线”- 用户的浏览器已打开并与我们的其中一台服务器保持 TCP 连接。
  • “离线”- 用户的浏览器不再连接到我们的服务器之一。

我们正在考虑的一种方便的方法是运行一个完全独立的“在线状态”服务器,我们的每个用户都将连接到该服务器(恰好一次):

  • 当连接到“在线状态”服务器时,它会回发到我们实际的 RoR 站点并让它知道“该用户刚刚登录”。
  • 当“在线状态”服务器的连接丢失时,它会回发到我们实际的 RoR 站点并让它知道“该用户刚刚注销”。

这种方法似乎很合理,并且使事情非常模块化(例如,在线状态服务器将非常简单,这很好)。我们可以编写这个在线状态服务器,但有以下问题:

  1. 我们没有考虑到上述架构的任何具体问题?
  2. 是否已经有一个守护进程或应用程序可以做到这一点?如果已经写好了,为什么要重新发明轮子?
  3. 是否有提供此功能的推送服务器(即它保持与用户的连接,但会在用户连接或断开连接时回发或向网络服务器上游发送通知?)

最佳答案

这是您设想用户会在他们的系统上安装的东西吗?

如果您正在寻找基于浏览器的系统,WebSockets 可能是您使用类似 Socket.IO 的唯一选择 http://socket.io/ .

作为该项目的一部分提供的 node.js 套接字服务器可以在 github 上找到:http://github.com/LearnBoost/Socket.IO-node

Node.js 是一个很好的平台,专为这个问题领域而设计,并且有许多用于节点的 WebSocket 服务器。

除非您的应用程序完全基于 ajax 并使用单个父页面,否则您将需要创建一个持久的父框架,其中包含包装您的应用程序的套接字,因为每次用户单击链接时,页面都会卸载并重新加载,从而导致从状态服务器断开连接和重新连接。

关于ruby-on-rails - 用户断开连接检测(即 "Online Status")守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3480734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com