Закрыть источник событий (SSE) при перезагрузке страницы - PullRequest
0 голосов
/ 06 апреля 2020

Я заметил, что моей странице потребовалось больше времени, чтобы обновить sh после добавления одного 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);
    }
  }

Я пытался добавить функцию onunload на страницу внутри функции new_event (), но с треском провалился.

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

Почему Источник события сохраняется, пока страница пытается перезагрузить? Это внутренняя проблема, так как большая часть работы выполняется на серверной части? Почему не сработало onunload событие? Обратите внимание, что эта же проблема возникает, когда я пытаюсь отойти от страницы.

Есть ли способ закрыть соединение с источником событий, не отставая от страницы на странице refre sh?

...