首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尽管调用了` `close()`,但服务器发送的事件连接并未关闭

尽管调用了` `close()`,但服务器发送的事件连接并未关闭
EN

Stack Overflow用户
提问于 2017-12-19 00:30:18
回答 1查看 2.2K关注 0票数 1

我希望在用户注销后以编程方式关闭Server-Sent-Events。但是,当用户重新登录时,浏览器不再执行任何https-request,因为它已达到SSE连接的限制。

我使用EventSource来监听事件。

这是我关闭连接的方式:

代码语言:javascript
复制
var eventSource;
function onChange(accountId:string, callback){
    var url = "...";

    eventSource = new EventSource(url);

    if(eventSource){
        eventSource.addEventListener("put", callback);
    }
}

function close(){
    this.eventSource.close()
}

当我在浏览器上观察网络连接时,我意识到连接仍然存在。Timing中的输出是:Caution: request is not finished yet!,以下事件流由于连接数量有限而停止。

我不确定EventSource是否是这样设计的,但我找不到任何关于这个问题的东西,因为许多人没有相同的场景。

每次我在我的浏览器(chrome)中重新加载页面时,所有现有的连接都会关闭,但我不想重新加载页面来解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2017-12-19 18:47:26

确保this.eventSource指的是您认为它是什么。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this如果从事件处理程序调用,它将不是全局作用域。

调用xxx.close()后,将xxx设置为null。(我怀疑这就是问题所在,但它可能有助于垃圾收集,也有助于查找but。)

作为问题的第三个想法,避免给全局变量以与内置对象相同的名称。我通常对我的事件源对象使用es

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47872590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档