Обработка отключения/прерывания клиента во время потокового ответа в Deno.serve ⇐ Javascript
Обработка отключения/прерывания клиента во время потокового ответа в Deno.serve
У меня есть код сервера Deno, который выглядит примерно так:
Deno.serve((req) => { пусть asyncIterator = getChunkIterator(req.url); const поток = новый ReadableStream({ асинхронное вытягивание (контроллер) { пытаться { const {значение, выполнено} = ожидание asyncIterator.next(); если (сделано) { контроллер.закрыть(); возвращаться; } контроллер.enqueue(значение); } поймать (ошибиться) { контроллер.ошибка(ошибка); } } }); пусть ответ = новый ответ (поток); обратный ответ; }); Потоковая передача ответа может занять несколько секунд, и клиент может отключиться на полпути. Мне нужно обнаружить это, чтобы я мог остановить (отдельный) «рабочий» сервер, который создает фрагменты данных для этого клиента.
Я понятия не имею, как это сделать, поскольку с помощью Deno.serve вы просто возвращаете объект Response, а не получаете поток для записи.
У меня есть код сервера Deno, который выглядит примерно так:
Deno.serve((req) => { пусть asyncIterator = getChunkIterator(req.url); const поток = новый ReadableStream({ асинхронное вытягивание (контроллер) { пытаться { const {значение, выполнено} = ожидание asyncIterator.next(); если (сделано) { контроллер.закрыть(); возвращаться; } контроллер.enqueue(значение); } поймать (ошибиться) { контроллер.ошибка(ошибка); } } }); пусть ответ = новый ответ (поток); обратный ответ; }); Потоковая передача ответа может занять несколько секунд, и клиент может отключиться на полпути. Мне нужно обнаружить это, чтобы я мог остановить (отдельный) «рабочий» сервер, который создает фрагменты данных для этого клиента.
Я понятия не имею, как это сделать, поскольку с помощью Deno.serve вы просто возвращаете объект Response, а не получаете поток для записи.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение