Ktor поддерживает серверные события в том смысле, что я могу использовать тип контента текст / серверное событие. Он работает довольно хорошо, но при отключении клиента, например. Вызов закрытия окна браузера / закрытия вручную, он по-прежнему будет продолжать отправлять события, так как он не обнаруживает разъединение до следующего события, при котором будет сгенерировано исключение. Есть ли способ получить событие для отключения клиента в запросе ktor, чтобы мы могли прекратить отправку событий на стороне сервера, а также ресурсов очистки?
Ktor sse отключение клиента
Ответы (1)
Реализация Websocket Ktor имеет расширение pinger
, которое делает то же самое для веб-сокетов. Так что я думаю, что то же самое и для SSE. Я подумал, что будет лучше отправить запрос функции здесь https://youtrack.jetbrains.com/issues/KTOR.
Поскольку мы используем SSE в Ktor в производстве, мы реализовали pinging клиентов в качестве фоновой сопрограммы. Он просто отправляет пустое событие каждые 30 секунд, и в случае сбоя соединение будет закрыто. Это предотвращает утечку соединений в случае, когда пользователь отключен, но сервер все еще поддерживает соединение.
person
lehvolk
schedule
28.08.2020