HTML5/Javascript上交所限制调用次数

HTML5/Javascript SSE limit number of calls

我对使用 js 和 HTML5 的 ServerSend 事件相当陌生。我有一个基本设置,我的页面调用 API,API 执行命令行,我试图实时显示此调用的结果(api 是在服务器上调用脚本,我正在为控制台输出提供服务)。

我的问题是,如果页面保持打开状态,API 会不断被调用。我想停止这种行为并只调用 API 一次。我尝试使用布尔值只定义一次事件源,但没有成功。

这是我的js代码:

function liveExec($scenarioId){
    var $run = true;
    if ($run)
    {
        var source = new EventSource('/run/'+$scenarioId+'/1');
        source.onmessage = function(event) {
        document.getElementById("result").innerHTML += event.data + "<br>";
    };
    $run= false;
    }
}

单击按钮调用该函数。 这是我的访问日志:

127.0.0.1 - - [28/Oct/2016:11:09:06 +0200] "GET /run/1/1 HTTP/1.1" 200 2318
127.0.0.1 - - [28/Oct/2016:11:09:31 +0200] "GET /run/1/1 HTTP/1.1" 200 2318
127.0.0.1 - - [28/Oct/2016:11:09:56 +0200] "GET /run/1/1 HTTP/1.1" 200 2318
127.0.0.1 - - [28/Oct/2016:11:10:21 +0200] "GET /run/1/1 HTTP/1.1" 200 2318
127.0.0.1 - - [28/Oct/2016:11:10:47 +0200] "GET /run/1/1 HTTP/1.1" 200 2317

显然,由于某种原因,该函数每 25 秒调用一次。

如有任何帮助,我们将不胜感激!谢谢!

在第一次运行之后通过source.close();关闭连接怎么样?