Ktor sse 客户端断开连接

Posted

技术标签:

【中文标题】Ktor sse 客户端断开连接【英文标题】:Ktor sse client disconnect 【发布时间】:2019-12-07 22:17:40 【问题描述】:

Ktor 支持服务器端事件,因为我可以使用文本/服务器事件内容类型。它工作得很好,但是在客户端断开连接时,例如浏览器窗口关闭/手动关闭调用,它仍然会继续发送事件,因为它不会检测到断开连接,直到下一个事件,它会抛出异常。有什么方法可以在 ktor 请求中获取客户端断开连接的事件,以便我们可以停止发送服务器端事件并清理资源?

【问题讨论】:

【参考方案1】:

Websocket Ktor 实现有pinger 扩展,它对websockets 做同样的事情。所以我认为这对 SSE 来说是完全有效的。我认为最好在这里提交功能请求https://youtrack.jetbrains.com/issues/KTOR。

当我们在生产环境中使用 Ktor 中的 SSE 时,我们将 ping 客户端实现为后台协程。它只是每 30 秒发送一次空事件,如果失败,连接将被关闭。当用户断开连接但服务器仍然保持连接时,它可以防止连接泄漏。

【讨论】:

以上是关于Ktor sse 客户端断开连接的主要内容,如果未能解决你的问题,请参考以下文章

服务器发送事件 - 在几次断开连接后流未重新连接

tcp连接的断开

Hazelcast 客户端与整个集群断开连接

如何从SignalR客户端端确定服务器断开连接

xshell避免长时间未操作断开连接

socket 用disconnect 断开,再重新连接怎么搞