我注意到添加 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);
}
}
我尝试在页面
insidenew_event()函数中添加一个
onunload
函数,但失败得很惨。
var ES = new EventSource('../folder/file.php');
window.onunload = function(){
ES.close();
}
为什么当页面尝试重新加载时事件源仍然存在?由于大部分工作都是在后端完成的,这是后端问题吗?为什么
onunload
活动没有成功?
请注意,当我尝试离开该页面时,也会出现同样的问题。
有没有办法关闭事件源连接而不延迟页面刷新?
我遇到了这个问题。我注意到当用户导航或重新加载页面时连接不会终止。当用户离开页面时,您需要显式关闭浏览器中的连接:
var sse = new EventSource('http://localhost/events');
window.onbeforeunload = function () {
sse.close();
};