在Ruby on Rails 3应用程序中查看并与您网站上当前的在线用户交谈

See and talk to your currently online users on your site in a Ruby on Rails 3 application

本文关键字:网站 交谈 用户 在线 Rails on Ruby 应用程序      更新时间:2023-09-26

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

我如何准确地监控谁是目前在网站上,并立即从列表中删除用户时,他们离开?

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

我怎样才能准确地监控谁是目前在网站上,并立即从名单中删除,当他们离开?

使用HTTP,你不能"立即"做到这一点。在浏览器中。我看到的几乎所有解决方案都使用了心跳技术。每隔X秒,浏览器(使用Ajax)发送一个请求,告知用户是否在线。如果你在x个心跳周期内没有收到用户的消息,你就会认为该用户已失去联系——似乎连Facebook都这样做。我建议你立即放弃你的要求,除非事情真的很重要。

另一种方法是实现Flash或Silverlight,建立到服务器的套接字连接。但是对服务器的需求很高,如果很多人访问您的站点,您将遇到端口等问题。

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

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

聊天在网页浏览环境中是非常不利的,因为当用户点击链接时页面将被重新加载。如果您正在考虑构建一个只支持聊天功能的应用程序,那么您可能想看看Ruby on Rails之外的东西。例如,Node.js就是一个很好的选择。