【问题标题】:What is the simplest way to implement "server push"-like behavior for a web page?为网页实现类似“服务器推送”的行为的最简单方法是什么?
【发布时间】:2010-10-26 19:04:50
【问题描述】:

我正在尝试为我的 Django 网站创建一个非常简单的 2 人聊天室。我正在学习 AJAX 来做到这一点。我需要在没有用户交互的情况下更新网页的某些部分:

  • 当用户 1 发送消息时,它应该出现在用户 2 的屏幕上
  • 当用户 1 注销时,他的状态应在用户 2 的屏幕上更改为“离线”

实现这一点的最简单方法是什么?是否只是使用 JavaScript 定期轮询服务器?如果是这样,这样做的最佳做法是什么?我找到了一些关于使用 setInterval 或 setTimeout 的解决方案,但不确定这是否是最好的方法。

(我读过关于反向 AJAX 的文章,但从我读到的内容来看,这实现起来更复杂。我不需要我的解决方案快速或可扩展;我只需要它工作即可。)

【问题讨论】:

    标签: javascript ajax comet reverse-ajax


    【解决方案1】:

    既然你说你不关心Comet,诚然这并不容易上手,那么 setInterval 就可以解决问题。不过,你想对它聪明一点。您可能应该以 30 秒的间隔开始。如果用户开始聊天,您的时间间隔应该下降到 5。随着您注意到越来越少的动作,您的计时器应该再次下降到 30 秒,依此类推。它不会在可扩展性大会上赢得任何奖项,但它会为您的普通中型网站完成它。

    有关此技术的更多信息,check out this related question

    【讨论】:

      【解决方案2】:

      利用Orbited。乍一看,您很容易目瞪口呆,开始抱怨太复杂,但一旦通过它,您就会明白什么是“最佳实践”,以及为什么它既快速又可扩展。

      您还会发现自己意识到这是一项出色的技术,可用于很多动态网页行为。

      【讨论】:

      • 谢谢乔尔;我去看看。
      【解决方案3】:

      另一种选择是WebSync On-Demand(或任何其他托管彗星服务......不确定是否有其他选择)。它可以让您实现服务器推送功能,但使用起来很简单,因为您需要做的就是包含 javascript 客户端。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-19
        • 2018-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多