Здравствуйте.
Дан сл. код:
[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?)
Т.е. как сделать так, чтобы на время стриминга страница полностью не загружалась?
Заранее благодарю.