javascript - 开发实时更新网站的最佳方式

标签 javascript php html ajax

我正在尝试开发一个网站,当其他用户发布帖子时,该网站会自动显示帖子,或者当用户向他发送消息时会收到通知,基本上与 Facebook 类似。无需重新加载页面或按 F5。

我多年来一直使用 Javascript 和 PHP,据我所知,保持页面更新的唯一方法是不断使用 AJAX 请求。

这是一个示例(从数据库检查消息):

setInterval(function() {
    $ajax({
      url: "http://myweb.com/checkmessage.php",
      type: "POST",
      data: {value: userID},
      dataType: "json",
      success: function(result){

              //If true do something and update message inbox

         }
    });
}, 500);

这基本上每 0.5 秒向我的 PHP 文件发送一次请求,我可以在其中访问我的数据库,并检查新消息并返回它们。多亏了这个代码,我可以实时收到消息通知,而无需更新我的网站。

但老实说,从性能 Angular 来看,每 0.5 秒一次发送数百个 AJAX 请求是非常糟糕的做法,它会减慢网站速度。

这就是为什么我在这里询问是否有更好的方法来实现这一点,我一直在检查 Facebook 以及它的实现方式对我来说纯粹是个谜。我仍然不知道他们是怎么做到的,在一个页面上进行如此大规模的更新,只需要几个电话(你可以自己检查,打开Facebook,等待它加载,然后打开谷歌开发者工具,转到网络并通过以下方式查看它)你的眼睛!)。

最佳答案

一些可能的方法是:

  • 网络套接字
  • 长轮询
  • 推送 API

您可以阅读有关它们的信息并做出选择。

关于javascript - 开发实时更新网站的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47113238/

相关文章:

javascript - HTML 文本区域防止某些文本被删除

javascript - 在javascript中,我如何使用正则表达式来验证逗号与其他字符

php - CodeIgniter 身份验证 + 用户权限

javascript - JS - 是否可以获得点击元素的确切宽度?

html - 自定义 UI-Bootstrap 按钮/按钮组

javascript - 向网页添加值部分

javascript - 更改 D3-legend 中符号的颜色

php - 如何从 foreach() 结果中删除最后一个结果

php - 使用 HTML FORM 和 PhP 更新 mySQL 数据库

html - 如何通过 CSS 隐藏 Disqus 的社交分享