【问题标题】:How can multiple clients be notified of a single users actions? Web based channels如何通知多个客户端单个用户的操作?基于网络的渠道
【发布时间】:2011-04-10 20:00:24
【问题描述】:

假设我们有一个基于 Web 的应用程序,用户可以登录到他们自己的频道。 我们的服务器管理和维护一个用户列表,以及他们当前的 IP 地址。

当有人登录时,每个客户端是否有可能收到该用户登录的通知?同样,如果有人注销,也会生成类似的通知。 (用于维护在线好友列表)。

IE:服务器是否可以向每个客户端发送某种数据包,或者客户端计算机(登录/退出的人)是否可以与所有其他客户端计算机进行通信。

只是在寻找有关该主题的想法。 如果你知道这种功能的一个很好的框架,我想听听它。 想到 AJAX 或 JQuery,但这些技术对这类事情有用吗?

谢谢大家...

【问题讨论】:

    标签: javascript jquery html ajax comet


    【解决方案1】:

    是的。 Comet 就是为此而生的。 Here 是一个 jQuery 插件。 this answer 很有用。或者您可以简单地以给定的速率对服务器进行 ajax 轮询,它会提供更改。

    那来自客户端。服务器只是提供它持有的当前状态(在内存中或在数据库中)。但是,应该特别注意多个服务器在一个集群中工作的情况。在这种情况下,他们应该要么复制他们的内存,要么使用“硬”存储(数据库),以便将更改传播到所有节点。

    【讨论】:

      【解决方案2】:

      Kwwika 是用于执行此类操作的库:http://kwwika.com/

      “希望您的网页在内容发生变化时立即更新?只需添加一个 KwwikTag。然后,当您在 KwwikScreen 中键入内容(或通过 Kwwik API 发布)时,每个人都会看到它。无需重新加载,无需轮询——新信息立即出现在页面上。”

      【讨论】:

      • 不也是用轮询实现的吗?
      • 来自网站:“Kwwika 不(通常)依赖轮询,而是使用更高效的异步数据推送” [...] "每个连接的客户端使用最有效的支持封装方法(Kwwika 支持六种不同的方法)。”
      【解决方案3】:

      这是可能的,但如果你仔细想想,很难让它很好地扩展。你可以使用 node.js 之类的东西,它是一个基于 JavaScript 的 http 服务器,非常简单(尽管你可以使用普通的 apache/etc 服务器,但要注意连接扩展)。那么你可以在客户端使用闪存、网络套接字或长轮询来检查是否有人登录(有一个线程安全队列、数据库表或平面日志文件来保存最近登录的记录)

      长轮询只是通过 Ajax 向服务器发出请求,直到发生某些事情(即登录)或发生超时后才会响应。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多