我正在尝试开发一个网站,当其他用户发布帖子时,该网站会自动显示帖子,或者当用户向他发送消息时会收到通知,基本上与 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/