我有一个 Ruby on Rails 3 应用程序,我希望能够查看当前在线的人员列表。例如 user1、IP 地址和国家。然后我希望能够打开聊天/向该用户推送消息,直到他们离开我的网站。
如何准确监控当前在站点上的用户并在用户离开时立即将其从列表中删除?
然后我可以通过 faye pub/sub 与他们交谈。
我有一个 Ruby on Rails 3 应用程序,我希望能够查看当前在线的人员列表。例如 user1、IP 地址和国家。然后我希望能够打开聊天/向该用户推送消息,直到他们离开我的网站。
如何准确监控当前在站点上的用户并在用户离开时立即将其从列表中删除?
然后我可以通过 faye pub/sub 与他们交谈。
如何准确监控当前在网站上的人员并在他们离开时立即从列表中删除?
好吧,使用 HTTP 您不能在浏览器中“立即”执行此操作。我看到的几乎所有解决方案都使用心跳技术。每隔 X 秒,浏览器会发送一个请求(使用 Ajax),告知用户是否在线。如果您在 x heartbeats 中没有收到用户的来信,您认为该用户已断开连接 - 似乎连 Facebook 都使用了这个。我会建议你立即放弃你的要求,除非它真的很重要。
另一种方法是实现 Flash 或 Silverlight,以建立与服务器的套接字连接。但是对服务器的要求很高,如果你的站点上有很多人,你就会遇到端口等问题。
我认为这与 Ruby on Rails 没有太大关系……但这很难在 HTTP 中仅使用脚本语言来实现。服务器不知道用户是否关闭了浏览器。服务器只是将请求的页面数据发送给用户并关闭连接。
您宁愿必须集成 Ajax 或 Flash 以使事情变得更容易。我见过一些人用 Flash 开发聊天程序,而且它似乎比任何其他 Ajax 实现的聊天程序工作得更好。
聊天在网络浏览环境中非常不利,因为当用户单击链接时页面将重新加载。如果您正在考虑构建一个仅支持聊天功能的应用程序,您可能希望查看 Ruby on Rails 以外的其他内容。例如,Node.js将是一个不错的选择。