0

好的,所以我一直在尝试使用某种 Javascript 来不断刷新更改的文件以实时获取更新,而不必使用 node.js 或 socket.io,因为我没有能力将其添加到我的服务器。

我一直在使用以下代码来解决这个问题,但我认为这是一种荒谬的做法。

<script type="text/javascript">
var st = setInterval(function(){
    $.get("api.php",{user:1});
}, 1000);
</script>

这只是其中的一个总和,在它停止并询问您是否还在那里之前,我有 25 个请求的限制。

如果没有服务器端插件,有没有更好的方法来做到这一点?

4

1 回答 1

0

假设文件单调增加,您可以向服务器询问差异。从偏移量 0 开始,获取返回文件的长度,将其添加到运行长度,然后请求从该位置开始的文件。这样,您不会尝试每秒传输一次整个文件,而只是在将它们附加在一起时添加到完整文件中的离散块。

另外,我不喜欢setInterval不知道长度的东西;我更喜欢自动刷新setTimeout(即在它完成它必须做的任何事情后将当前函数设置为超时);这样,您可以在请求之间有 1 秒的延迟,而不是在请求的开始之间(如果延迟变得很大,这可能会开始重叠)。

var getFromApi = function() {
  $.get("api.php", { user: 1 }, function() {
    setInterval(getFromApi, 1000);
  };
};
getFromApi();
于 2013-01-04T04:36:57.177 回答