【问题标题】:How to make a web page to be always up to date using Javascript?如何使用 Javascript 使网页始终保持最新状态?
【发布时间】:2018-07-04 05:35:05
【问题描述】:

这个网页有点像新闻板,我希望它使用我的数据库中的最新数据进行更新,这些数据是通过 API 提供的,而无需刷新页面。

我认为最简单的方法是使用每 X 秒调用一次的计时器,但我正在寻找一种使用更少资源的更好方法。我阅读了有关 Webhook 的信息,但我找不到实现这一点并获得我想要的东西的方法。

任何建议都会很有帮助。 提前致谢!

【问题讨论】:

  • Ajax 请求是更好的方法,因为它可以只重新加载您网站的 iframe,而不是所有页面。

标签: javascript api timer webpage webhooks


【解决方案1】:

取决于您的后端技术。 如果您是 .NET 开发人员,那么最著名的 real-time web functionality 库就是 SignalR

还有很多其他库,例如 socket.io 或 API,例如 pusher

它们实施起来并不难,但由于它们无论如何都会给您的应用增加另一层复杂性,因此您可能需要更多地考虑在您的发布者/订阅者方法之间传输什么。

根据我的经验,我们曾经在属性更改时向订阅者提供整个对象,但后来我们决定只通知所有订阅者有关更改,并让他们决定是否要使用新对象进行刷新数据。

【讨论】:

  • 这是我一直在寻找的答案。我要对 SignalR 做一些研究,因为这是我想要实现的。非常感谢!
【解决方案2】:

我认为您要问的是如何不断地从来源获得反馈。我不确定您的 API 究竟是如何工作的,但如果您要查找的新闻元素很简单,例如 <iframe>,则可以使用 Javascript 来检查是否有更新,例如:

var mynewsfeed = ""; //Declares newsfeed variable
setInterval(function(){
     if (API.update != nul) { //Should lighten the load on the processor
         mynewsfeed = API.update() //Updates newsfeed
         document.getElementById("newsfeediframe").src=mynewfeed;
     }
}, 10000); //Will check every 10 seconds (can be shorter)

很遗憾,由于您没有提供任何代码,或者您使用的是什么 API,我无法提供更多帮助。如果您编辑您的帖子,它会更容易提供帮助。

您可以尝试的另一件事是(如果 API 支持的话)只需执行类似的操作

if (API.checkForUpdate()) {
    //Do something
}

【讨论】:

    【解决方案3】:

    以您想要的时间间隔进行 ajax 调用。这是你可能的答案-Call jQuery Ajax Request Each X Minutes

    【讨论】:

    • OP 说,“我认为最简单的方法是使用每 X 秒调用一次的计时器,但我正在寻找一种使用更少资源的更好方法。”这意味着他们不想要这种答案。我的帖子可能会做类似的事情,但它暗示了优化。
    猜你喜欢
    • 2018-02-22
    • 2021-04-10
    • 2020-09-13
    • 2019-01-30
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多