Re[8]: Как сделать частично загруженную страницу при стриминге
От: Sharov Россия  
Дата: 08.11.23 15:41
Оценка:
Здравствуйте, rameel, Вы писали:

R>Добавляешь как параметр твоего метода-endpoint'а. Инфраструктура сама прокинет его в твой метод. Этот токен связан с текущим запросом.

R>
R>public async Task<IActionResult> Get123(CancellationToken cancellationToken)
R>


Кажется, оно, благодарю:

    [HttpGet(Name = "streamer")]
    public async Task<IActionResult> Get2(CancellationToken cancellationToken)
    {
        
        using (var tcpClient = new TcpClient())
        {
            await tcpClient.ConnectAsync("localhost", 5555, cancellationToken);

            using (var netStream = tcpClient.GetStream())
            {
               
                Response.ContentType = "multipart/x-mixed-replace; boundary=abcd";
                var ns = netStream;
                var tcpCl = tcpClient;
                Response.OnCompleted(() =>
                {
                    ns?.Dispose();
                    tcpCl?.Dispose();
                    return Task.CompletedTask;
                });
                await netStream.CopyToAsync(Response.Body,1024*1024, cancellationToken);
            }
        }
        return Ok();
    }



Т.е. теперь при закрытии страницы в браузере OnCompleted отрабатывает нормально. Интересно, а без ct и закрытия страницы, поток так и будет куда-то писать данные?
Т.е. я зыкрыл страницу, что стало с Response.Body? Я не пойми куда гоню поток и трачу ресурсы...

Да и еще (дурацкий) вопрос: а почему до return Ok() я не дохожу в случае отмены (например, закрытия страницы)? Ну типа запись в поток завершилась,
идем дальше.
Кодом людям нужно помогать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.