Как сделать частично загруженную страницу при стриминге видео?
От: Sharov Россия  
Дата: 07.11.23 20:25
Оценка:
Здравствуйте.

Дан сл. код:
 [HttpGet(Name = "streamer")]
        public async Task<IActionResult> Get123()
        {
            using (var tcpClient = new TcpClient())
            {
                await tcpClient.ConnectAsync("localhost", 5555);
                using (var netStream = tcpClient.GetStream())
                {
                    Response.ContentType = "multipart/x-mixed-replace; boundary=abcd";
                    await netStream.CopyToAsync(Response.Body);
                }
            }

            return Ok();
        }


  Клиент
 
<html style="height: 100%;">
  <head>
     <meta name="viewport" content="width=device-width, minimum-scale=0.1">
  </head>
  <body style="margin: 0px; height: 100%; background-color: rgb(14, 14, 14);">
    <img style="display: block;-webkit-user-select: none;margin: auto;background-color: hsl(0, 0%, 25%);" src="http://localhost:5030/Streamer" width="219" height="184">
  </body>
</html>

Суть кода такова -- при запросе браузера перегоняю поток jpeg'ов , по сути mjpeg, для отображения видео.
Все работает, но есть вопрос-проблема -- как сделать так, чтобы страница при сеансе все время была в загрузке,
а не просто загрузилась и все? Ну т.е. крестик бы был (например, в хроме), чтобы при его нажатии остановить
поток видео на сервере? Потому как сейчас запрос находится на строке
await netStream.CopyToAsync(Response.Body);

и страница полностью загружена. А хотелось бы иметь возможность при нажатии на крестик в браузере поток остановить, ибо
по сути каждый запрос это утечка ресурсов -- клиент закрыл страницу, а я об этом ничего не знаю и продолжаю куда-то гнать
данные. (Кстати, я закрыл страницу , что при этом будет с Response.Body?)

Т.е. как сделать так, чтобы на время стриминга страница полностью не загружалась?

Заранее благодарю.
Кодом людям нужно помогать!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.