如何动态更新用户列表[关闭]
Posted
技术标签:
【中文标题】如何动态更新用户列表[关闭]【英文标题】:How to dynamically update users list [closed] 【发布时间】:2013-06-20 00:17:34 【问题描述】:我正在尝试创建登录用户的显示列表。所以想象一下,在左侧面板上,我有一个登录人员列表。每当有新人登录时,该列表将立即更新并显示给所有其他人。
我找不到这方面的教程,因为我不知道要搜索的正确短语。请给我一个建议。
【问题讨论】:
看看[这里][1]。它应该为您提供所需的一切。 [1]:***.com/questions/3583203/… 【参考方案1】:当用户登录时,必须实时通知所有登录用户。
使用 html5,您可以使用 websockets。然而,在此之前有几种不同的技术被称为comet
最幼稚的实现是老式轮询,每个客户端每 X 秒使用 ajax 轮询一次服务器,询问所有登录用户的列表。同时,这可以用作心跳来验证用户是否仍然处于活动状态,因为某些用户可能没有使用注销链接注销并只是关闭了选项卡。
一个步骤称为长轮询,而不是每 X 秒轮询一次,而是发送一个 ajax 请求,并且服务器仅在某些事件发生时才响应(“有人登录”)。一旦客户端收到响应,它会立即发送另一个 ajax 请求以重新建立连接。
了解底层细节是值得的,但没有必要重新发明***。我使用名为pusher 的服务。它还具有网络挂钩,可在连接终止后提醒您,这对于确定用户何时关闭选项卡而不注销很有用。
这些第三方服务如何运作?
他们要求您将 js sn-p 添加到您的 html 页面,这将与他们的服务器建立连接。如果浏览器支持,则使用 Web 套接字,否则可以使用几种备用方法之一,例如用于旧浏览器的 comet 或 flash。
当您希望发送信息时,您只需向服务发出一个 post 请求,然后该服务将提醒目标客户端已经打开的连接。
【讨论】:
【参考方案2】:这是一个相当广泛的问题,答案很大程度上取决于您的环境。你网站的后端是 php 的吗?节点?导轨?等等。你是如何存储登录用户列表的?
一旦你弄清楚了,简短的回答是“使用 AJAX”,基本上你会想要定期轮询服务器端脚本,询问用户列表(脚本可能会从文件/数据库中读取)。 jQuery 的$.get
方法可以做到这一点。当列表更改时,您会重新呈现 HTML 列表。
如果您对此过程的步骤有更多疑问,请告诉我。
【讨论】:
感谢您的回答。我的脚本由 PHP 支持。我想知道是否应该将登录用户列表存储在 mysql 上,或者只是在服务器上存储一个简单的文本文件。据我了解,AJAX 会不时查看记录的列表并相应地更新到用户的屏幕? 不需要重新发明***,在我下面的回答中,我建议使用像 Pusher 这样的第三方服务。 同意。像 Pusher 这样的东西也可能会更好地扩展。但这对于简单和低流量的东西来说仍然相当容易。 是的,我很可能会阅读有关 Comet 的信息并自己实现它。但是很高兴了解 Pusher @hamstu 我有一个小问题:当用户关闭浏览器时,如何更新登录用户列表?现在,只要用户单击“注销”按钮,我就可以更新列表以上是关于如何动态更新用户列表[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使 Flask-WTForms 从标签名称列表中动态更新标签?