我使用js和HTML5对ServerSend事件相当新。我有一个基本设置,我的页面调用API,API执行命令行,我试图实时显示此调用的结果(api在服务器上调用脚本,我&#39 ; m服务于控制台输出)。
我的问题是,如果页面保持打开状态,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秒调用一次。
任何帮助将不胜感激!谢谢!
答案 0 :(得分:1)
首次运行后,通过iframe
关闭连接怎么办?