Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 用户断开连接检测(即“联机状态”)守护程序_Ruby On Rails_Tcp - Fatal编程技术网

Ruby on rails 用户断开连接检测(即“联机状态”)守护程序

Ruby on rails 用户断开连接检测(即“联机状态”)守护程序,ruby-on-rails,tcp,Ruby On Rails,Tcp,摘要:当用户通过TCP连接/断开连接时,是否有一个后台程序可以进行回发,或者编写一个后台程序是一个好主意 详情: 围绕这一点已经有很多问题;但我相信这是一个不同的转折点。我们正在编写一个Ruby on Rails web应用程序,我们希望能够判断用户是在线还是离线,以下定义适用: 在线-用户的浏览器处于打开状态,并与我们的一台服务器保持TCP连接。 脱机-用户的浏览器不再连接到我们的服务器之一。 我们认为一种方便的方法是运行一个完全独立的在线状态服务器,每个用户只需连接一次: 当连接到在线状态服

摘要:当用户通过TCP连接/断开连接时,是否有一个后台程序可以进行回发,或者编写一个后台程序是一个好主意

详情: 围绕这一点已经有很多问题;但我相信这是一个不同的转折点。我们正在编写一个Ruby on Rails web应用程序,我们希望能够判断用户是在线还是离线,以下定义适用:

在线-用户的浏览器处于打开状态,并与我们的一台服务器保持TCP连接。 脱机-用户的浏览器不再连接到我们的服务器之一。 我们认为一种方便的方法是运行一个完全独立的在线状态服务器,每个用户只需连接一次:

当连接到在线状态服务器时,它将发回到我们的实际RoR站点,并让它知道该用户刚刚登录。 当在线状态服务器的连接丢失时,它将发回到我们的实际RoR站点,并让它知道该用户刚刚注销。 这种方法似乎是合理的,并且使事情非常模块化。例如,在线状态服务器将非常简单,这很好。我们能够编写此联机状态服务器,但有以下问题:

以上架构中有没有我们没有考虑到的具体问题? 是否有一个守护进程或应用程序已经在执行此操作?既然已经写出来了,为什么还要重新发明轮子呢? 是否存在提供此功能的推送服务器,即它维护与用户的连接,但在用户连接或断开连接时将向上游的web服务器发回或发送通知?
这是您设想的用户将安装在其系统上的东西吗

如果您正在寻找基于浏览器的系统,那么WebSocket可能是使用Socket.IO之类的工具的唯一选择

作为此项目的一部分提供的node.js套接字服务器可以在github上找到:

Node.js正是为这个问题领域设计的一个很好的平台,有许多用于Node的WebSocket服务器


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

注意,这个问题实际上并不是问RubyonRails,因为Remi很乐意使用PostBack。因此,任何语言的解决方案都是可行的。事实上,我们的web应用程序在RoR中,但实际的在线状态守护程序本身可以使用任何语言,并使用回发更新我们的网站。不,我们认为我们只需要从客户端使用JavaScript打开套接字连接。感谢指向WebSocket的指针,这可能很有用。。。现在我更感兴趣的是这个等式的服务器端的存在,你假设用户点击链接会改变页面。对于现代AJAX'y web应用程序,情况并不一定如此。当然,这确实说明了为什么现在还没有数百个这样的状态通知服务器。@ChrisInEdmonton-这是一个非常安全的假设,但重点是。事实上,我已经写过了,除非你的应用程序完全是ajax,但是经过了远程处理。编辑以澄清。我认为这些系统并不多,因为用目前的网络技术很难做到。基于浏览器的聊天是最接近我们的了。@Remi-SocketIO的东西有一个服务器组件,是用JavaScript为node.js编写的。WebSocket、Flash或类似工具是从浏览器打开套接字连接的唯一方法。