Javascript ajax仅在需要时刷新

Javascript ajax仅在需要时刷新,javascript,php,ajax,spotify,live,Javascript,Php,Ajax,Spotify,Live,我有一个web应用程序,它显示从AJAX请求接收到的数据,这些数据发送到运行在同一服务器上的PHP脚本。在我的例子中,这是spotify播放器的回放。因为我希望在歌曲发生变化等情况下,这些信息尽可能是最新的,所以我目前的方法是每秒发送一个请求。是否有可能,例如,从PHP服务器向Javascript发送一个数据更改触发器,以便只有在该触发器之后才会触发AJAX请求,从而减少客户端不需要的通信量?或者我还缺少另一种方法,可以更优雅地解决这个问题吗?因为它不是生产产品,只是个人使用,所以您可以在以下方

我有一个web应用程序,它显示从AJAX请求接收到的数据,这些数据发送到运行在同一服务器上的PHP脚本。在我的例子中,这是spotify播放器的回放。因为我希望在歌曲发生变化等情况下,这些信息尽可能是最新的,所以我目前的方法是每秒发送一个请求。是否有可能,例如,从PHP服务器向Javascript发送一个数据更改触发器,以便只有在该触发器之后才会触发AJAX请求,从而减少客户端不需要的通信量?或者我还缺少另一种方法,可以更优雅地解决这个问题吗?

因为它不是生产产品,只是个人使用,所以您可以在以下方面做:

JavaScript用户界面:像现在这样调用一次。完成后,再次呼叫成功、错误、超时

服务器端:记住最后一首歌是什么,当你收到一首新歌,与之前通过openajax调用发回的歌曲相比


基本上,它将像一个web套接字一样,始终向服务器打开一个请求。这不是一个好的设计,但它可以快速而肮脏地让您的宠物项目运行,而不必重新构造它以使用web套接字

当前的AJAX设置称为轮询,非常常见。您设想的选项称为配置和实现不同的选项。如果您还没有准备好使用WebSocket,那么请研究如何在后端提高轮询效率。您所描述的并不需要任何复杂的东西,AJAX调用与服务器应用程序在同一台机器上进行。只要不要经常打电话就好了。我唯一的建议是在成功调用后使用setTimeout,而不是setInterval,如果这是您记录的,那么您也可以发布代码