Ktor sse客户端断开连接

4

Ktor支持服务器端事件,我可以使用text/server-event内容类型。它运行得很好,但是在客户端断开连接时(例如浏览器窗口关闭/手动关闭调用),它仍然会继续发送事件,因为它只有在下一个事件时才检测到断开连接,此时它将抛出异常。是否有方法可以在ktor请求中获得客户端断开连接的事件,以便我们可以停止发送服务器端事件并清理资源?

1个回答

1
Websocket Ktor 实现具有 pinger 扩展,可用于 Websockets。因此,我认为对于 SSE 来说也是完全有效的。我认为在此处https://youtrack.jetbrains.com/issues/KTOR 提交功能请求会更好。
由于我们在 Ktor 中使用 SSE 进行生产,我们实现了将客户端作为后台协程进行 ping。它只发送空事件每 30 秒一次,如果连接失败,则会关闭连接。这可以防止连接泄漏,以防用户断开连接但服务器仍保持连接。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接