【问题标题】:See and talk to your currently online users on your site in a Ruby on Rails 3 application在 Ruby on Rails 3 应用程序中查看并与您网站上的当前在线用户交谈
【发布时间】:2011-09-27 13:43:46
【问题描述】:

我有一个 Ruby on Rails 3 应用程序,我希望能够查看当前在线用户的列表。例如 user1、IP 地址和国家。然后,我希望能够打开聊天/向该用户推送消息,直到他们离开我的网站。

如何准确监控网站上的当前用户并在用户离开时立即将其从列表中删除?

然后我可以通过 faye pub/sub 与他们交谈。

【问题讨论】:

  • 什么是"faye pub/sub"?

标签: javascript jquery ruby-on-rails ruby-on-rails-3 faye


【解决方案1】:

如何准确监控当前在网站上的用户并在他们离开时立即从列表中删除?

使用 HTTP,您不能在浏览器中“立即”执行此操作。我看到的几乎所有解决方案都使用心跳技术。每隔 X 秒,浏览器会发送一个请求(使用 Ajax),告知用户是否在线。如果您在 x heartbeats 中没有收到用户的来信,您认为该用户已断开连接 - 似乎连 Facebook 都使用了这个。我会建议你立即放弃你的要求,除非它真的很重要。

另一种方法是实现 Flash 或 Silverlight,以建立与服务器的套接字连接。但是对服务器的要求很高,如果你的站点有很多人,你就会遇到端口等问题。

【讨论】:

  • 您不能“立即”执行此操作的原因是 HTTP(S) 是无状态的。因此,在任何给定时刻,服务器只能知道来自任何给定客户端的最后一个请求。这是正确的解决方案。
【解决方案2】:

我认为这与 Ruby on Rails 没有太大关系……但这很难在 HTTP 中仅使用脚本语言来实现。服务器不知道用户是否关闭了浏览器。服务器只是将请求的页面数据发送给用户并关闭连接。

您宁愿集成 Ajax 或 Flash 以使事情变得更容易。我见过一些人用 Flash 开发聊天程序,它似乎比任何其他 Ajax 实现的聊天程序都好用。

聊天在网络浏览环境中非常不利,因为当用户单击链接时页面将重新加载。如果您正在考虑构建一个仅支持聊天功能的应用程序,您可能希望查看 Ruby on Rails 以外的其他内容。例如,Node.js 将是一个不错的选择。

【讨论】:

  • 没有真正回答这个问题。如何准确监控当前在网站上的人员并在他们离开时立即从列表中删除?我可以和faye聊天。还是谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-26
  • 2011-01-11
  • 1970-01-01
相关资源
最近更新 更多