我有一个rails3应用程序,我希望能够看到当前在线的人员列表。例如user1,ip address,country。然后,我希望能够向该用户打开聊天/推送消息,直到他们离开我的网站。
我如何准确地监控当前在网站上的人,并在他们离开时立即从列表中删除?
然后我可以通过faye pub / sub与他们交谈。
有人做过这样的事吗?
感谢 里克
答案 0 :(得分:1)
我如何准确地监控当前在网站上的人,并在他们离开时立即从列表中删除?
使用HTTP,您无法在浏览器中“立即”执行此操作。我看到的几乎所有解决方案都使用心跳技术。每隔X秒,就会从浏览器发送一个请求(使用ajax),告诉用户是否在线。如果你没有在x心跳中听到用户的声音,你会认为用户是断开连接的 - 即使facebook使用它,它也会接缝。我会建议你立即放弃你的要求,除非它真的很重要。
另一种方法是实现Flash或Silverlight,以建立与服务器的套接字连接。但是对服务器的需求很高,如果你的网站上有很多人,你会遇到端口等问题。
答案 1 :(得分:0)
我认为这与ruby-on-rails并没有多大关系......但是这在使用脚本语言的HTTP中很难实现。服务器不知道用户是否已关闭浏览器。服务器做的是将请求的页面数据发送给用户并关闭连接。
您宁愿必须集成Ajax或Flash以使事情变得更容易。我见过有些人用flash开发聊天程序,它似乎比任何其他AJAX实现的聊天程序都要好得多。
聊天在网页浏览环境中非常不利,因为在用户点击链接时会重新加载页面。如果您正在考虑构建仅支持聊天功能的应用程序,您可能希望在rails上查找除ruby之外的其他内容。例如,node.js将是一个很好的。