在页面重新加载时关闭事件源 (SSE)

问题描述 投票:0回答:1

我注意到添加 one SSE 后,我的页面刷新时间更长(有时长达 30 秒,这对我来说是一个很大的禁忌)。当页面尝试重新加载时,我注意到 SSE

onmessage
事件仍然存在。

function new_event() {
  if (typeof(EventSource !== undefined)) {
    var ES = new EventSource('../folder/file.php');
    /** This event continues while page tries to refresh  **/
    ES.onmessage = function(ev) {
      var data = ev.data;
      // Data is still outputed in the console while page tries to refresh
      console.log(data);
    }
  }

我尝试在页面

inside
new_event()函数中添加一个onunload函数,但失败得很惨。

var ES = new EventSource('../folder/file.php');
window.onunload = function(){
    ES.close();
}

为什么当页面尝试重新加载时事件源仍然存在?由于大部分工作都是在后端完成的,这是后端问题吗?为什么

onunload
活动没有成功? 请注意,当我尝试离开该页面时,也会出现同样的问题。

有没有办法关闭事件源连接而不延迟页面刷新?

javascript jquery server-sent-events
1个回答
0
投票

我遇到了这个问题。我注意到当用户导航或重新加载页面时连接不会终止。当用户离开页面时,您需要显式关闭浏览器中的连接:

  var sse = new EventSource('http://localhost/events');

  window.onbeforeunload = function () {
    sse.close();
  };
© www.soinside.com 2019 - 2024. All rights reserved.