【问题标题】:Push changes to a webpage without refreshing将更改推送到网页而不刷新
【发布时间】:2012-12-12 16:09:22
【问题描述】:

我知道我们可以通过定期轮询更改来做到这一点。这可以通过 AJAX 来实现(例如使用 jQuery.load()setInterval() )。

但我想知道还有其他方法可以做到这一点吗?其他成本更低或更有效的方法?一个很棒的聊天客户端遵循什么逻辑?一旦你开始打字,另一端就会知道你正在打字。

我们在 stackoverflow 上遵循什么机制来更新赞成计数或显示已进行编辑等,而不刷新页面?

【问题讨论】:

标签: javascript jquery ajax webpage


【解决方案1】:

在保持客户端和服务器(接近)实时同步时,立即想到以下 3 件事:

  • 长轮询:您已经提到了这个,您在客户端上设置了一个计时器,它每 10 秒左右触发一个新的 AJAX 请求。这可能是三者中最“低技术”的,也是效率最低的;但它也是最兼容的(这意味着它可以在所有浏览器中运行,甚至像 IE6/7 这样的浏览器)

  • WebSockets:sdespont 在 cmets 中已经提到过这个。虽然 WebSockets 比长轮询更有效(因为它只是无限期地保持两种客户端-服务器通信打开),但如果您要做的只是从服务器获取定期更新,它可能是一个非常严厉的解决方案。 Firefox 和 Chrome 的所有版本都支持它,and IE added support in IE10

  • 服务器发送的事件:这个似乎不太受欢迎(或者只是不太知名)。它允许服务器向客户端发送更改(与客户端向服务器请求更改相反,就像长轮询的情况一样)。这也只是一种单向通信(服务器 --> 客户端),并且在请求完成后连接会关闭(与 2 向通信保持打开状态的 WebSockets 相反)。再一次,并非所有浏览器都支持它,and there is no IE support at all

This 也是一篇很好的文章,它解释了更现代的客户端-服务器通信方式之间的区别。 如果您想了解有关服务器发送事件的更多信息,this is a good write up

【讨论】:

    猜你喜欢
    • 2010-12-26
    • 2011-06-01
    • 1970-01-01
    • 2016-09-03
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    相关资源
    最近更新 更多